Spring security密碼加密實(shí)現(xiàn)代碼實(shí)例
xml配置如下
<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>3.2.3.RELEASE</version></dependency>
BCryptPasswordEncoder相關(guān)知識(shí):
用戶表的密碼通常使用MD5等不可逆算法加密后存儲(chǔ),為防止彩虹表破解更會(huì)先使用一個(gè)特定的字符串(如域名)加密,然后再使用一個(gè)隨機(jī)的salt(鹽值)加密。
特定字符串是程序代碼中固定的,salt是每個(gè)密碼單獨(dú)隨機(jī),一般給用戶表加一個(gè)字段單獨(dú)存儲(chǔ),比較麻煩。
BCrypt算法將salt隨機(jī)并混入最終加密后的密碼,驗(yàn)證時(shí)也無需單獨(dú)提供之前的salt,從而無需單獨(dú)處理salt問題。
代碼如下
import org.springframework.security.crypto.bcrypt.BCrypt;import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;public class Test { public static void main(String[] args) { // springsecurity 注冊(cè)加密方法 BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); String encode = bCryptPasswordEncoder.encode('1'); System.out.println(encode); //$2a$10$H2HTe3SVdKMk8ewC3gRKouva7U6DAQspHqyhcdg805JGHAApV1Wci //$2a$10$Iz4Y52GmirUf5SRW6jTIA.0cgaS0mKTYZVN2cFFeK8DXk9YHVhJDW // springsecurity 登錄加密方法 BCrypt bCrypt = new BCrypt(); String hashpw = bCrypt.hashpw('1', '$2a$10$Iz4Y52GmirUf5SRW6jTIA.0cgaS0mKTYZVN2cFFeK8DXk9YHVhJDW'); System.out.println(hashpw); }}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. moment轉(zhuǎn)化時(shí)間戳出現(xiàn)Invalid Date的問題及解決2. python爬蟲實(shí)戰(zhàn)之制作屬于自己的一個(gè)IP代理模塊3. WML的簡(jiǎn)單例子及編輯、測(cè)試方法第1/2頁4. 如何在jsp界面中插入圖片5. 開發(fā)效率翻倍的Web API使用技巧6. ajax請(qǐng)求后臺(tái)得到j(luò)son數(shù)據(jù)后動(dòng)態(tài)生成樹形下拉框的方法7. Ajax返回值類型與用法實(shí)例分析8. asp批量添加修改刪除操作示例代碼9. HTML 絕對(duì)路徑與相對(duì)路徑概念詳細(xì)10. .NET6打包部署到Windows Service的全過程
