您的位置 首页 java

Java中为什么使用char[]而不是String存储密码?

String是不可改变的对象,也就是说一旦你创建了String对象,那么在垃圾回收之前你是没有办法手动销毁这个String对象的,如果有个程序能dump内存,恰好这时垃圾回收未执行(垃圾回收执行是不确定的),dump下来的内存可以清晰读取String,这样就有了暴露密码的风险。

char []数组呢,你可以在使用完后直接清除数据,而且你也可以随意更改数组内的内容,而且密码不会在系统中任何地方出现,即使是在垃圾回收之前。

那么理解这个问题就很简单了,这就是个安全策略问题,使用String你很可能会不小心打印到日志或者其他不安全的地方,而使用char[]则不会有这样的问题,免于二次攻击。

文章来源:智云一二三科技

文章标题:Java中为什么使用char[]而不是String存储密码?

文章地址:https://www.zhihuclub.com/180745.shtml

关于作者: 智云科技

热门文章

网站地图