製作密碼驗證機制時,常會需要針對密碼進行加密之後,再存入資料庫,本次於某專案中有實做到密碼加/解密機制,所使用的加密格式為AES 128位元加密,並且將加密過後的資料以Base64的格式編譯為字串,最後存入資料庫欄位中,如下所述;

1. 本次使用的加密金鑰為自行撰打組成,由於使用的為128位元加密,金鑰格式需要有16bytes,可英數組合且不建議使用特殊符號,此金鑰存入資料庫某欄位,直接以Connection的方式讀取;

 

2. 取得金鑰字串之後,便可進行密碼的加解密工作,如下;

 

Encrypt及Decrypt分別為加解密方法,傳入的參數為金鑰SecretKey物件、以及要加密的字串或是解密的byte陣列,需要注意的是IvParameterSpec為加/解密時要用到的參數,型別為byte陣列,同樣為16個字元的英數混和格式字串轉byte而來,而且加解密實用的IV值要一樣否則無法執行。

另外包含了將金鑰字串轉換為SecretKey物件的方法,轉換後用以加/解密。

 

3. 接著便可呼叫加密方法,並將密碼Encode為字串後存入資料庫,反之亦然;

如此便大致完成了Java AES的字串加密存取!

 

參考資料:

http://rightthewaygeek.blogspot.tw/2014/02/java-jdbc-sql-database.html

http://ijecorp.blogspot.tw/2016/05/java-jce-aes-encryption-decryption-2016.html

http://www.coder51ad.pub/article/625636.html

arrow
arrow
    全站熱搜

    squall75726 發表在 痞客邦 留言(1) 人氣()