mysql 給指定表中的資料進行加密

2021-09-28 20:35:11 字數 1186 閱讀 6784

1.最近在寫專案時牽扯到了資料庫加密問題,因此就趁機把資料庫加密這塊簡單了解了下.

2.mysql 資料庫加密方式好像有四五種方式,我用的是aes_decrypt函式對相關字段進行加密

3.加密用的函式是aes_encrypt(』』,』』),解密用的函式是aes_decrypt(』』,』』);

其中這兩個函式的第乙個引數是你加密的欄位名稱,第二個引數是這該引數定義的key名稱.類似於key-value形式

4,下面是我寫的乙個小demo

4.1 實體類如下(在資料庫中定義相對應的資料表)

4.2dao層新增資料方法如下

public void addtest(user user) throws sqlexception, classnotfoundexception 

備註:其中sql語句中的意思就是:將password欄位進行加密,加密的名字是"password"(名字是自定義的),需要記住,解密的時候還需要用到.

執行該方法後資料庫中的內容如下所示:

![在這裡插入描述](

到這一步加密就成功了.

5.接下來就是進行解密了

在這裡我用了查詢你方法來進行解密,**如下:

public user selectuser(string username) throws sqlexception, classnotfoundexception

return user;

}

備註:其中sql語句的意思是,查詢encrypt 中所有的內容包括解密後的密碼,aes_decrypt(unhex(password), 'password') 這段**的意思是把key(也就是加密時自定義命名的)為passwrod的password欄位:

進行解密

效果如下:![在這裡插入描述](

到這裡解密就成功了.

我當時寫到這裡的時候也碰到了疑問,就是怎麼把解密後的密碼賦值給password這個字段,答案就是: user.setpassword(resultset.getstring("aes_decrypt(unhex(password),

直接把解密後的欄位名稱賦值給password這個字段就行了.

MySQL匯出指定表中的資料

mysql匯出指定表中的資料 要求 1.不匯出創表的語句,因為表已經建好 缺省會匯出,先drop table然後create table 2.匯出的insert語句加上ignore,允許重複執行 預設不會加上ignore 3.insert語句中列出表中的字段,看得更清楚 預設不會 www.2cto....

給指定資料庫表中新增指定列

存在actor表,包含如下列資訊 create table ifnot exists actor actor id smallint 5 not null primary key,first name varchar 45 not null,last name varchar 45 not null...

mysql查詢按照指定欄位的指定順序進行排序

之前我們已經了解的mysql按照中文進行排序的實現方法了 那麼如何按照指定欄位的指定順序進行排序呢?例如有乙個使用者表user,有id,username,status欄位,status的字段值有1,2,3,4四種情況,如何將使用者表中的資料按照status欄位的2,4,1,3順序進行排序呢?這時候需...