我发现的两个Java bcrypt隐式实现都将String作为输入。如您所知,将密码放入字符串中会使您容易受到内存攻击。
您可以使用PBKDF2以及bcrypt。两者都被认为是一流的。这里和这里都有PBKDF2 Java代码示例。两者都允许将a传递
char[]给函数。
为了回答注释中的隐式问题,您不使用MD5或任何哈希的原因是它们太快了。使用特殊硬件可以强行强制使用密码。Bcrypt和PBKDF2设计得很慢。
即使您要使用哈希(我建议您反对),也必须对其加盐。逆转未加盐的密码哈希很简单(请参阅此工具)。
该CrackStation的基准上的密码存储是一个很好的一般参考。


![结合使用BCrypt和char [] 结合使用BCrypt和char []](http://www.mshxw.com/aiimages/31/570784.png)
