Java基础 -> 为什么 char 数组比 Java 中的 String 更适合存储密码?

为什么 char 数组比 Java 中的 String 更适合存储密码?

  • 由于字符串在 Java 中是不可变的,如果你将密码存储为纯文本,它将在内存中可用,直到垃圾收集器清除它

    • 我们应该要加密一下这个密码,重新保存一个加密后的,但是字符串不可变的原因,就算改了,之前的密码依旧在内存中有一段时间存活
  • 并且为了可重用性,会存在 String 在字符串池中, 它很可能会保留在内存中持续很长时间,从而构成安全威胁。

    • String 在字符串池会获得比我们想象的更加久,这对密码来说是有安全隐患的
  • 由于字符串是不可变的,所以不能更改字符串的内容,因为任何更改都会产生新的字符串,而如果你使用char[],你就可以将所有元素设置为空白或零。

    • 用完密码之后将char[]的内存改为空,这样就算会在内存中存活一段时间,也是没关系的
  • 因此,在字符数组中存储密码可以明显降低窃取密码的安全风险。

  • 当然还有其他什么不太重要的原因,比如Java推荐我们不要用字符串用char[]保存密码

  • 打印的时候字符串会直接打印出来等等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值