在Swing中,密码字段具有getPassword()(returns char[])方法,而不是通常的getText()(returns String)方法。同样,我遇到了不使用String密码的建议。

为什么String涉及密码安全性受到威胁?使用起来感觉很不方便char[]

解决方案:

字符串是不可变的。这意味着一旦创建了String,如果另一个进程可以转储内存,则除了反射之外,您将无法清除数据,然后再进行垃圾回收。

使用数组,您可以在使用完数据后显式擦除数据。您可以用任何您喜欢的东西覆盖阵列,并且即使在垃圾回收之前,密码也不会出现在系统中的任何位置。

因此,是的,这一个安全性问题-但是即使使用,也char[]只会减少攻击者的机会窗口,并且仅适用于这种特定类型的攻击。

如评论中所述,垃圾回收器移动的数组可能会将数据的零散副本保留在内存中。我相信这是特定于实现的-垃圾收集器可能会清除所有内存,以免发生这种情况。即使是这样,仍然会有一段时间char[]包含实际角色作为攻击窗口。

本文首发于java黑洞网,csdn同步更新

java为什么密码比字符串更喜欢char []?相关推荐

  1. 为什么密码比字符串更喜欢char []?

    在Swing中,密码字段具有getPassword() (返回char[] )方法,而不是通常的getText() (返回String )方法. 同样,我遇到了不使用String处理密码的建议. 为什 ...

  2. 六种流行的语言大餐---C、C++、python、Java、php、C#你更喜欢哪一个呢?

    引言 鉴于五一期间超大的人流量,LZ思来想去,最终还是选择蜗居在自己的出租屋.无聊之际,当然不能忘了做点什么事情,于是LZ就研究了一下几种语言的皮毛,在这里献丑一翻,希望各位猿友莫要见笑. 不过说来也 ...

  3. C++/Python/Java/C,四大语言对比,你更喜欢哪种?

    现如今,互联网时代已经是风生水起,IT技术人才更是层出不穷.但学习在精不在多,总要有一方面精通才是自己的资本.面对众多的编程语言,Java.C语言.C++.Python等编程,你更喜欢哪种? 虽说C语 ...

  4. Java中string字符串和char字符之间的千丝万缕

    目录 前言 String字符串和char字符的区别 拓展 相互转换 String字符串转换成char字符数组 char字符转换成String字符串 char字符数组转换成String字符串 Strin ...

  5. java append concat_关于java:+ =比concat更有效吗?

    本问题已经有最佳答案,请猛点这里访问. 我一直在阅读我的团队中其他开发人员生成的代码,他们似乎更喜欢使用+=进行字符串连接,而我更喜欢使用.concat(),因为它更容易阅读. 我正在尝试准备一个论据 ...

  6. 在Java中从字符串中删除空格

    我有一个像这样的字符串: mysz = "name=john age=13 year=2001"; 我想删除字符串中的空格. 我试过trim()但这只删除了整个字符串前后的空格. ...

  7. java求拼接后的字符串长度,java如何拼接字符串

    java 动态拼接字符串,Java 字符串拼接效率分析及最佳实践,java字符串拼接,java如何拼接字符串 在JAVA 中拼接两个字符串的最简便的方式就是使用操作符"+"了.如果 ...

  8. 如何从Java中的字符串值获取枚举值?

    说我有一个枚举 public enum Blah {A, B, C, D } 我想找到一个字符串的枚举值,例如"A"就是Blah.A 怎么可能做到这一点? Enum.valueOf ...

  9. Java里的字符串, String类简单介绍.

    String类在java面试中也是1个常见的问题点. 所以也是写在这里方便以后查阅了. 大家都知道c语言里是没有String 字符串这个数据类型的. 只能用字符数组的1个特殊形式来表示一个字符串, 就 ...

最新文章

  1. Login failed for user 'NT AUTHORITY\SYSTEM'. 原因: 无法打开明确指定的数据库。异常处理...
  2. c语言循环练习[xcode]
  3. Docker fence
  4. pip 系统无法将文件移到不同的磁盘驱动器 的问题
  5. CCF 2016年题目题解 - Python
  6. winform判断线程有没有完成_并发编程系列1:线程池的架构实现、大小配置、及四种线程池使用...
  7. android rtsp 延时,ijkplayer 单视频流直播延迟问题解决过程
  8. [整理] mysql操作
  9. DPDK 网卡绑定和解绑
  10. mysql dba系统学习(18)mysql主从复制的实现
  11. 2022年上半年网络工程师下午真题及答案
  12. 10款硬盘数据恢复软件推荐
  13. linux 安全狗 乱码,打狗棒法之:Cknife(C刀)自定义模式秒过安全狗
  14. CPDA数据分析师认证,大数据分析的综合型人才
  15. 数据结构一些常见术语的中英文对照
  16. 教你快速填充Excel中不同的数据,别再一个个向下拉动啦
  17. IntelliJ IDEA汉化解决方案教程
  18. oracle中text是什么意思,ORACLE TEXT是什么
  19. BLE Mesh (8) —— Friendship
  20. typora:一些常用数学符号

热门文章

  1. (23)System Verilog旗语解决资源共享需求
  2. (03)Verilog HDL模块例化
  3. eve服务器维护后怪物刷新,【独家披露】EVE异常空间怪物那些事儿(一)普通异常...
  4. Linux驱动学习2
  5. 22.创建DockWidget
  6. endp 汇编start_常见汇编代码
  7. 【Python】变量那些事
  8. 条件锁pthread_cond_t
  9. bomb android实战,android 仿qq app源码下载(bmob)
  10. 【LeetCode】剑指 Offer 19. 正则表达式匹配