日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Security加密策略

發布時間:2023/12/15 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Security加密策略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源:http://www.kaixin001.com/repaste/2140356_2581791934.html###


Acegi 對于密碼提供三種方式:明文及不采用任何加密方式、MD5加密方式、哈希算法加密方式。

只需要在DAO的認證管理器中分別加入以下對應配置:


第一種:不使用任何加密方式的配置


Java代碼?
<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">?? ?
??? <property name="userDetailsService" ref="userDetailsService" />?? ?
? ?
??? <!-- 明文加密,不使用任何加密算法, 在不指定該配置的情況下,Acegi默認采用的就是明文加密 -->?? ?
??? <!--?? ?
??? <property name="passwordEncoder">?? ?
??????? <bean class="org.acegisecurity.providers.encoding.PlaintextPasswordEncoder">???? ?
??????????????? <property name="ignorePasswordCase" value="true"></property>???? ?
??????? </bean>?? ?
??? </property>?? ?
??? -->?? ?
</bean>? ?

第二種:MD5方式加密


Java代碼?
<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">?? ?
??? <property name="userDetailsService" ref="userDetailsService" />?? ?
? ?
??? <property name="passwordEncoder">?? ?
??????? <bean class="org.acegisecurity.providers.encoding.Md5PasswordEncoder">?? ?
??????????? <!-- false 表示:生成32位的Hex版, 這也是encodeHashAsBase64的, Acegi 默認配置; true? 表示:生成24位的Base64版 -->?? ?
??????????? <property name="encodeHashAsBase64" value="false" />?? ?
??????? </bean>?? ?
??? </property>?? ?
</bean>? ?

第三種:使用MD5加密,并添加全局加密鹽


Java代碼?
<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">?? ?
??? <property name="userDetailsService" ref="userDetailsService" />?? ?
? ?
??? <property name="passwordEncoder">?? ?
??????? <bean class="org.acegisecurity.providers.encoding.Md5PasswordEncoder">?? ?
??????????? <property name="encodeHashAsBase64" value="false" />?? ?
??????? </bean>?? ?
??? </property>?? ?
? ?
??? <!-- 對密碼加密算法中使用特定的加密鹽及種子 -->?? ?
??? <property name="saltSource">?? ?
??????? <bean class="org.acegisecurity.providers.dao.salt.SystemWideSaltSource">?? ?
??????????? <property name="systemWideSalt" value="acegisalt" />?? ?
??????? </bean>?? ?
??? </property>?? ?
</bean>? ?

第四種:使用MD5加密,并添加動態加密鹽

Java代碼?
<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">?? ?
??? <property name="userDetailsService" ref="userDetailsService" />?? ?
? ?
??? <property name="passwordEncoder">?? ?
??????? <bean class="org.acegisecurity.providers.encoding.Md5PasswordEncoder">?? ?
??????????? <property name="encodeHashAsBase64" value="false" />?? ?
??????? </bean>?? ?
??? </property>?? ?
? ?
??? <!-- 對密碼加密算法中使用特定的加密鹽及種子 -->?? ?
??? <property name="saltSource">?? ?
??????? <!-- 通過動態的加密鹽進行加密,該配置通過用戶名提供加密鹽, 通過UserDetails的getUsername()方式 -->?? ?
???????? <bean class="org.acegisecurity.providers.dao.salt.ReflectionSaltSource">?? ?
??????????? <property name="userPropertyToUse" value="getUsername" />?? ?
???????? </bean>?? ?
??? </property>?? ?
</bean>? ?

第五種:使用哈希算法加密,加密強度為256


Java代碼?
<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">?? ?
??? <property name="userDetailsService" ref="userDetailsService" />?? ?
? ?
??? <property name="passwordEncoder">?? ?
??????? <bean class="org.acegisecurity.providers.encoding.ShaPasswordEncoder">?? ?
??????????? <constructor-arg value="256" />?? ?
??????????? <property name="encodeHashAsBase64" value="false" />?? ?
??????? </bean>?? ?
??? </property>?? ?
</bean>? ?
第六種:使用哈希算法加密,加密強度為SHA-256


Java代碼?
<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">?? ?
??? <property name="userDetailsService" ref="userDetailsService" />?? ?
? ?
??? <property name="passwordEncoder">?? ?
??????? <bean class="org.acegisecurity.providers.encoding.ShaPasswordEncoder">?? ?
??????????? <constructor-arg value="SHA-256" />?? ?
??????????? <property name="encodeHashAsBase64" value="false" />?? ?
??????? </bean>?? ?
??? </property>?? ?
</bean>? ?
上述配置只是在Acegi通過表單提交的用戶認證信息中的密碼做各種加密操作。而我們存儲用戶密碼的時候,可以通過一下程序完成用戶密碼操作:


Java代碼?
package com.brofe.acegi;?? ?
? ?
import org.acegisecurity.providers.encoding.Md5PasswordEncoder;?? ?
import org.acegisecurity.providers.encoding.ShaPasswordEncoder;?? ?
? ?
? ?
public class TestPasswordEncoder {?? ?
? ?
??? public static void main(String[] args) throws Exception {?? ?
?????????? ?
??????? md5(); // 使用簡單的MD5加密方式?? ?
?????????? ?
??????? sha_256(); // 使用256的哈希算法(SHA)加密?? ?
?????????? ?
??????? sha_SHA_256(); // 使用SHA-256的哈希算法(SHA)加密?? ?
?????????? ?
??????? md5_SystemWideSaltSource(); // 使用MD5再加全局加密鹽加密的方式加密??? ?
??? }?? ?
? ?
????? ?
??? public static void md5() {?? ?
??????? Md5PasswordEncoder md5 = new Md5PasswordEncoder();?? ?
??????? // false 表示:生成32位的Hex版, 這也是encodeHashAsBase64的, Acegi 默認配置; true? 表示:生成24位的Base64版?? ?
??????? md5.setEncodeHashAsBase64(false);?? ?
??????? String pwd = md5.encodePassword("123", null);?? ?
??????? System.out.println("MD5: " + pwd + " len=" + pwd.length());?? ?
??? }?? ?
? ?
????? ?
??? public static void sha_256() {?? ?
??????? ShaPasswordEncoder sha = new ShaPasswordEncoder(256);?? ?
??????? sha.setEncodeHashAsBase64(false);?? ?
??????? String pwd = sha.encodePassword("123", null);?? ?
??????? System.out.println("哈希算法 256: " + pwd + " len=" + pwd.length());?? ?
??? }?? ?
?????? ?
????? ?
??? public static void sha_SHA_256() {?? ?
??????? ShaPasswordEncoder sha = new ShaPasswordEncoder();?? ?
??????? sha.setEncodeHashAsBase64(false);?? ?
??????? String pwd = sha.encodePassword("123", null);??? ?
??????? System.out.println("哈希算法 SHA-256: " + pwd + " len=" + pwd.length());?? ?
??? }?? ?
?????? ?
????? ?
??? public static void md5_SystemWideSaltSource () {?? ?
??????? Md5PasswordEncoder md5 = new Md5PasswordEncoder();?? ?
??????? md5.setEncodeHashAsBase64(false);?? ?
?????????? ?
??????? // 使用動態加密鹽的只需要在注冊用戶的時候將第二個參數換成用戶名即可?? ?
??????? String pwd = md5.encodePassword("123", "acegisalt");?? ?
??????? System.out.println("MD5 SystemWideSaltSource: " + pwd + " len=" + pwd.length());?? ?
??? }?? ?
} ??

總結

以上是生活随笔為你收集整理的Spring Security加密策略的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。