Java如何實現(xiàn)密碼加密
在查詢時,我們?nèi)绻獙τ脩舻牡卿浶畔⑦M行加密,通常會將其密碼進行加密.
1) 可以借助spring框架工具類DigestUtils
2) 也可以使用shiro框架來實現(xiàn)
//保存用戶自身信息//1構(gòu)建一個鹽值對象String salt=UUID.randomUUID().toString();//隨機字符串//2對密碼進行鹽值加密(加密算法MD5-特點:不可逆,相同內(nèi)容加密結(jié)果也相同)//2.1加密方式1(借助spring框架工具類DigestUtils)//String newPassword=DigestUtils.md5DigestAsHex((salt+entity.getPassword()).getBytes());//2.2加密方式2(借助shiro框架中的API)SimpleHash sh=new SimpleHash('MD5', entity.getPassword(), salt, 1);String newPassword=sh.toHex();System.out.println('newPassword='+newPassword);entity.setSalt(salt);entity.setPassword(newPassword);
以上就是兩者方式分別使用,
注意:
鹽值salt:UUID.randomUUID().toString();生成的是一個隨機字符串.
SimpleHash sh=new SimpleHash('MD5', entity.getPassword(), salt, 1);
這行shiro框架提供的加密中,
第一個參數(shù)'MD5'為加密算法,其特點:不可逆(只能加密不能解密),但是相同內(nèi)容加密結(jié)果也相同;
第二個參數(shù)source,代表原密碼;
第三個參數(shù)salt,就是我們先生成的鹽值隨機數(shù);
第四個參數(shù)1,代表加密次數(shù),我們這里只加密了一次.
entity.setSalt(salt);entity.setPassword(sh.toHex());
加密處理過后,我們再將新修改的密碼轉(zhuǎn)換為16進制數(shù)賦值給對象,salt的傳遞看你對象屬性的設(shè)置.
然后再根據(jù)新的對象內(nèi)的數(shù)據(jù)進行操作即可.
以上就是Java如何實現(xiàn)密碼加密的詳細內(nèi)容,更多關(guān)于Java密碼加密的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. 編程語言PHP在Web開發(fā)領(lǐng)域的優(yōu)勢在哪?2. 詳解Android studio 動態(tài)fragment的用法3. Android如何加載Base64編碼格式圖片4. 解決Android studio xml界面無法預(yù)覽問題5. Spring Boot和Thymeleaf整合結(jié)合JPA實現(xiàn)分頁效果(實例代碼)6. 什么是python的自省7. 基于android studio的layout的xml文件的創(chuàng)建方式8. 在IDEA中實現(xiàn)同時運行2個相同的java程序9. .Net Core使用Coravel實現(xiàn)任務(wù)調(diào)度的完整步驟10. 圖文詳解vue中proto文件的函數(shù)調(diào)用

網(wǎng)公網(wǎng)安備