Java如何實(shí)現(xiàn)密碼加密
在查詢時(shí),我們?nèi)绻獙?duì)用戶的登錄信息進(jìn)行加密,通常會(huì)將其密碼進(jìn)行加密.
1) 可以借助spring框架工具類DigestUtils
2) 也可以使用shiro框架來(lái)實(shí)現(xiàn)
//保存用戶自身信息//1構(gòu)建一個(gè)鹽值對(duì)象String salt=UUID.randomUUID().toString();//隨機(jī)字符串//2對(duì)密碼進(jìn)行鹽值加密(加密算法MD5-特點(diǎn):不可逆,相同內(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();生成的是一個(gè)隨機(jī)字符串.
SimpleHash sh=new SimpleHash('MD5', entity.getPassword(), salt, 1);
這行shiro框架提供的加密中,
第一個(gè)參數(shù)'MD5'為加密算法,其特點(diǎn):不可逆(只能加密不能解密),但是相同內(nèi)容加密結(jié)果也相同;
第二個(gè)參數(shù)source,代表原密碼;
第三個(gè)參數(shù)salt,就是我們先生成的鹽值隨機(jī)數(shù);
第四個(gè)參數(shù)1,代表加密次數(shù),我們這里只加密了一次.
entity.setSalt(salt);entity.setPassword(sh.toHex());
加密處理過(guò)后,我們?cè)賹⑿滦薷牡拿艽a轉(zhuǎn)換為16進(jìn)制數(shù)賦值給對(duì)象,salt的傳遞看你對(duì)象屬性的設(shè)置.
然后再根據(jù)新的對(duì)象內(nèi)的數(shù)據(jù)進(jìn)行操作即可.
以上就是Java如何實(shí)現(xiàn)密碼加密的詳細(xì)內(nèi)容,更多關(guān)于Java密碼加密的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. python爬蟲(chóng)實(shí)戰(zhàn)之制作屬于自己的一個(gè)IP代理模塊2. HTML 絕對(duì)路徑與相對(duì)路徑概念詳細(xì)3. 基于javaweb+jsp實(shí)現(xiàn)企業(yè)財(cái)務(wù)記賬管理系統(tǒng)4. 如何在jsp界面中插入圖片5. 解決ajax請(qǐng)求后臺(tái),有時(shí)收不到返回值的問(wèn)題6. python實(shí)現(xiàn)PolynomialFeatures多項(xiàng)式的方法7. 使用FormData進(jìn)行Ajax請(qǐng)求上傳文件的實(shí)例代碼8. .NET6打包部署到Windows Service的全過(guò)程9. Ajax返回值類型與用法實(shí)例分析10. css代碼優(yōu)化的12個(gè)技巧
