java为什么密码比字符串更喜欢char []?
在Swing中,密码字段具有getPassword()
(returns char[]
)方法,而不是通常的getText()
(returns String
)方法。同样,我遇到了不使用String
密码的建议。
为什么String
涉及密码安全性受到威胁?使用起来感觉很不方便char[]
。
解决方案:
字符串是不可变的。这意味着一旦创建了String
,如果另一个进程可以转储内存,则除了反射之外,您将无法清除数据,然后再进行垃圾回收。
使用数组,您可以在使用完数据后显式擦除数据。您可以用任何您喜欢的东西覆盖阵列,并且即使在垃圾回收之前,密码也不会出现在系统中的任何位置。
因此,是的,这是一个安全性问题-但是即使使用,也char[]
只会减少攻击者的机会窗口,并且仅适用于这种特定类型的攻击。
如评论中所述,垃圾回收器移动的数组可能会将数据的零散副本保留在内存中。我相信这是特定于实现的-垃圾收集器可能会清除所有内存,以免发生这种情况。即使是这样,仍然会有一段时间char[]
包含实际角色作为攻击窗口。
本文首发于java黑洞网,csdn同步更新
java为什么密码比字符串更喜欢char []?相关推荐
- 为什么密码比字符串更喜欢char []?
在Swing中,密码字段具有getPassword() (返回char[] )方法,而不是通常的getText() (返回String )方法. 同样,我遇到了不使用String处理密码的建议. 为什 ...
- 六种流行的语言大餐---C、C++、python、Java、php、C#你更喜欢哪一个呢?
引言 鉴于五一期间超大的人流量,LZ思来想去,最终还是选择蜗居在自己的出租屋.无聊之际,当然不能忘了做点什么事情,于是LZ就研究了一下几种语言的皮毛,在这里献丑一翻,希望各位猿友莫要见笑. 不过说来也 ...
- C++/Python/Java/C,四大语言对比,你更喜欢哪种?
现如今,互联网时代已经是风生水起,IT技术人才更是层出不穷.但学习在精不在多,总要有一方面精通才是自己的资本.面对众多的编程语言,Java.C语言.C++.Python等编程,你更喜欢哪种? 虽说C语 ...
- Java中string字符串和char字符之间的千丝万缕
目录 前言 String字符串和char字符的区别 拓展 相互转换 String字符串转换成char字符数组 char字符转换成String字符串 char字符数组转换成String字符串 Strin ...
- java append concat_关于java:+ =比concat更有效吗?
本问题已经有最佳答案,请猛点这里访问. 我一直在阅读我的团队中其他开发人员生成的代码,他们似乎更喜欢使用+=进行字符串连接,而我更喜欢使用.concat(),因为它更容易阅读. 我正在尝试准备一个论据 ...
- 在Java中从字符串中删除空格
我有一个像这样的字符串: mysz = "name=john age=13 year=2001"; 我想删除字符串中的空格. 我试过trim()但这只删除了整个字符串前后的空格. ...
- java求拼接后的字符串长度,java如何拼接字符串
java 动态拼接字符串,Java 字符串拼接效率分析及最佳实践,java字符串拼接,java如何拼接字符串 在JAVA 中拼接两个字符串的最简便的方式就是使用操作符"+"了.如果 ...
- 如何从Java中的字符串值获取枚举值?
说我有一个枚举 public enum Blah {A, B, C, D } 我想找到一个字符串的枚举值,例如"A"就是Blah.A 怎么可能做到这一点? Enum.valueOf ...
- Java里的字符串, String类简单介绍.
String类在java面试中也是1个常见的问题点. 所以也是写在这里方便以后查阅了. 大家都知道c语言里是没有String 字符串这个数据类型的. 只能用字符数组的1个特殊形式来表示一个字符串, 就 ...
最新文章
- Login failed for user 'NT AUTHORITY\SYSTEM'. 原因: 无法打开明确指定的数据库。异常处理...
- c语言循环练习[xcode]
- Docker fence
- pip 系统无法将文件移到不同的磁盘驱动器 的问题
- CCF 2016年题目题解 - Python
- winform判断线程有没有完成_并发编程系列1:线程池的架构实现、大小配置、及四种线程池使用...
- android rtsp 延时,ijkplayer 单视频流直播延迟问题解决过程
- [整理] mysql操作
- DPDK 网卡绑定和解绑
- mysql dba系统学习(18)mysql主从复制的实现
- 2022年上半年网络工程师下午真题及答案
- 10款硬盘数据恢复软件推荐
- linux 安全狗 乱码,打狗棒法之:Cknife(C刀)自定义模式秒过安全狗
- CPDA数据分析师认证,大数据分析的综合型人才
- 数据结构一些常见术语的中英文对照
- 教你快速填充Excel中不同的数据,别再一个个向下拉动啦
- IntelliJ IDEA汉化解决方案教程
- oracle中text是什么意思,ORACLE TEXT是什么
- BLE Mesh (8) —— Friendship
- typora:一些常用数学符号
热门文章
- (23)System Verilog旗语解决资源共享需求
- (03)Verilog HDL模块例化
- eve服务器维护后怪物刷新,【独家披露】EVE异常空间怪物那些事儿(一)普通异常...
- Linux驱动学习2
- 22.创建DockWidget
- endp 汇编start_常见汇编代码
- 【Python】变量那些事
- 条件锁pthread_cond_t
- bomb android实战,android 仿qq app源码下载(bmob)
- 【LeetCode】剑指 Offer 19. 正则表达式匹配