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)注腳本之家其它相關(guān)文章!
相關(guān)文章
ocp開閉原則_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了ocp開閉原則的相關(guān)資料,ocp開閉原則指導(dǎo)我們?nèi)绾谓⒁粋€(gè)穩(wěn)定的、靈活的系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Ajax實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了jQuery ajax實(shí)現(xiàn)省市縣三級(jí)聯(lián)動(dòng)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能幫助到你2021-07-07Java中Executor和Executors的區(qū)別小結(jié)
在Java并發(fā)編程中,Executor是一個(gè)核心接口,提供了任務(wù)執(zhí)行的抽象方法,而Executors是一個(gè)工具類,提供了創(chuàng)建各種線程池的工廠方法,Executor關(guān)注任務(wù)的執(zhí)行,而Executors關(guān)注如何創(chuàng)建適合的執(zhí)行器,感興趣的可以了解一下2024-10-10解決spring AOP中自身方法調(diào)用無(wú)法應(yīng)用代理的問(wèn)題
這篇文章主要介紹了解決spring AOP中自身方法調(diào)用無(wú)法應(yīng)用代理的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08SpringCloud客戶端報(bào)錯(cuò):- was unable to send&nb
這篇文章主要介紹了SpringCloud客戶端報(bào)錯(cuò):- was unable to send heartbeat!的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05