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順序進行排序呢?這時候需...