Lan*_*fee 9 java security string
可能重复:
为什么char []比字符串更适合密码?
我在某处读到将敏感键存储为char []而不是String更好,因为后者可以在内存中找到.由于JPasswordField的getText()方法已被弃用,因此它也有一点意义.
这是真的?
一旦你完成了使用密码,char[]你总是可以用0或随机值覆盖它.但是,您不能对String对象执行此操作,因为它们是Java中的不可变对象,并且字符串将保持活动状态,直到垃圾收集器启动并清除它.
以下是http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html上的一个有趣的说明.
在此示例中,我们提示用户输入我们从中获取加密密钥的密码.
将密码收集并存储在java.lang.String类型的对象中似乎是合乎逻辑的.但是,这里有一点需要注意:String类型的对象是不可变的,即没有定义的方法允许您在使用后更改(覆盖)或清零String的内容.此功能使String对象不适合存储安全敏感信息,如用户密码.您应该始终在char数组中收集和存储安全敏感信息.
因此,javax.crypto.spec.PBEKeySpec类将密码作为char数组(并返回).
| 归档时间: |
|
| 查看次数: |
896 次 |
| 最近记录: |