不,无法使用浏览器JavaScript来提高密码安全性。我强烈建议您阅读本文。在您的情况下,最大的问题是鸡肉问题:
提供Javascript密码学的“鸡蛋问题”是什么?
如果您不信任网络提供密码,或者更糟糕的是,不信任服务器不保留用户密码,则不能信任他们提供安全代码。在您介绍加密货币之前嗅探密码或阅读日记的同一名攻击者只是在这样做之后劫持了加密代码。
[...]
为什么不能使用TLS / SSL来传递Javascript加密代码?
您可以。这听起来很难,但是您可以使用SSL安全地将Javascript加密传输到浏览器。问题在于,使用SSL建立了安全通道后,您将不再需要Javascript加密技术。您拥有“真实的”密码学。
这导致:
在Javascript中运行加密代码的问题在于,几乎加密所依赖的任何功能都可以被用于构建托管页面的任何内容无声地覆盖。可以在此过程的早期(通过生成伪造的随机数,或通过篡改算法使用的常量和参数)取消加密安全性,或在以后(通过将关键材料归还攻击者)或在最可能的情况下取消加密安全性。---完全绕开了加密货币。
任何Java代码都没有可靠的方法来验证其执行环境。Javascript密码不能问:“我真的在处理随机数生成器,还是在处理由攻击者提供的某种形式的传真?” 它当然不能断言“除我本人同意的方式外,任何人都不得对此加密机密做任何事情”。这是在使用加密的其他环境中经常提供的两个属性,而在Javascript中是不可能的。
基本上问题是这样的:
- 您的客户不信任您的服务器,因此他们想添加额外的安全代码。
- 该安全代码由您的服务器(不信任的服务器)提供。
或者,
- 您的客户不信任SSL,因此他们希望您使用额外的安全代码。
- 该安全代码通过SSL交付。
注意:此外,SHA-256也不适用于此,因为它很容易暴力破解未加盐的非迭代密码。如果仍然决定执行此操作,请寻找bcrypt,scrypt或PBKDF2的实现。