`

BCryptPasswordEncoder

 
阅读更多
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
	public static void main(String[] args) {
		String password = "123456";
		BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(6);
		String hashedPassword1 = passwordEncoder.encode(password);
		String hashedPassword2 = passwordEncoder.encode(password);
		String hashedPassword3 = passwordEncoder.encode(password);
		String hashedPassword4 = passwordEncoder.encode(password);
		System.out.println(hashedPassword1);
		System.out.println(hashedPassword2);
		System.out.println(hashedPassword3);
		System.out.println(hashedPassword4);
		
		boolean match1 = passwordEncoder.matches(password, hashedPassword1);
		System.out.println(match1);
		boolean match2 = passwordEncoder.matches(password, hashedPassword2);
		System.out.println(match2);
		boolean match3 = passwordEncoder.matches(password, hashedPassword3);
		System.out.println(match3);
		boolean match4 = passwordEncoder.matches(password, hashedPassword4);
		System.out.println(match4);
		
	}

 

$2a$06$Her60GVyob.Ndhay4KbH3OShEeuyy0SNQStZ.Pl90HWiN7UEETv0i
$2a$06$Vbtkylrumz6/ozMVE4x0Xuh7yCycKrhZGYrYjY2ejF3CudNhZImjO
$2a$06$S5mqTvjnsmNwEVUOY15Hs.6tuwGmgRxVdYIMPiUKwrQv3/O86akni
$2a$06$k.4qWZ8KDd6K8qSbtXnjX.A9O2ZJtDYlp4ebk7awEThk5pCI3lbIS
true
true
true
true

 登录注册还是用https安全。

在客户端base64或者md5什么的真心没用,我直接监听到你所谓的密文,然后用脚本发起一个http请求就可以登录上去了。

http在网络上是明文传输的,代理和网关都能够看到所有的数据,在同一局域网内也可以被嗅探到,你可以开个wireshark抓下局域网的包试试看。

我认为加密也没有提高什么攻击难度,因为攻击者就没必要去解密原始密码,能登录上去就表示目标已经实现了,所以,难度没有提高。

另外,在客户端md5后,服务端怎么把原始密码还原出来,不能数据库直接存md5吧?
所以要选择加密算法的话,还要让服务端能还原出来原始密码。
然后:
如果是简单的base64下,这种算法对安全性没什么提高呀,base64又不是加密算法,它的作用就是编码下而已,如果这个能难道黑客的话,那他可以洗洗睡了。
其他的诸如非对称加密之类的算法当然可以,但是这不是https提供的功能么?而且https提供的安全保障还可以应对其他的攻击。

 

http://segmentfault.com/q/1010000000926027

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics