日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java存储密码用字符数组

發(fā)布時間:2025/3/20 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java存储密码用字符数组 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

字符數(shù)組和字符串都可以用于存儲文本數(shù)據(jù),但是在選擇具體哪一種時,如果你沒有針對具體的情況是很難回答這個問題的。但是任何與字符串相關(guān)的問題一定有線索可以在字符串的屬性里面找到,比如不可變性。他就用這種方式去說服面試官。這里我們就來探討一些關(guān)于為什么你應(yīng)該使用char[] 來存儲密碼而不是字符串。

  • 因?yàn)?span style="color:rgb(255,0,0);">字符串是不可變對象,如果作為普通文本存儲密碼,那么它會一直存在內(nèi)存中直至被垃圾收集器回收。因?yàn)樽址畯淖址刂腥〕龅?#xff08;如果池中有該字符串就直接從池中獲取,否則new 一個出來,然后把它放入池中),這樣有很大的機(jī)會長期保留在內(nèi)存中,這樣會引發(fā)安全問題。因?yàn)槿魏慰梢栽L問內(nèi)存的人能以明碼的方式把密碼dump出來。另外你還應(yīng)該始終以加密而不是普通的文本來表示密碼。因?yàn)樽址遣豢勺?#xff0c;因此沒有任何方法可以改變其內(nèi)容,任何改變都將產(chǎn)生一個新的字符串,而如果使用char[],你就可以設(shè)置所有的元素為空或者為零(這里作者的意思是說,讓認(rèn)證完后該數(shù)組不再使用了,就可以用零或者null覆蓋原來的密碼,防止別人從內(nèi)存中dump出來)。所以存儲密碼用字符數(shù)組可以明顯的減輕密碼被盜的危險。
  • Java官方本身也推薦字符數(shù)組,JpasswordField的方法getPassword()就是返回一個字符數(shù)組,而由于安全原因getText()方法是被廢棄掉的,因?yàn)樗祷匾粋€純文本字符串。跟隨Java 團(tuán)隊(duì)的步伐吧,沒有錯。
  • 字符串以普通文本打印在在log文件或控制臺中也易引起危險,但是如果使用數(shù)組你不能打印數(shù)組的內(nèi)容,而是它的內(nèi)存地址。盡管這不是它的真正原因,但仍值得注意。
String strPassword="Unknown"; char[] charPassword= new char[]{'U','n','k','w','o','n'}; System.out.println("String password: " + strPassword); System.out.println("Character password: " + charPassword);String password: Unknown Character password: [C@110b053

以上所有就是為什么字符數(shù)組比字符串保存密碼要好的原因,盡管使用char[]還不足以安全。我同樣建議你用hash或者密碼加密代替普通文本,而且一旦認(rèn)證完成盡可能快的把他清除掉。

我是天王蓋地虎的分割線 ? ? ? ? ? ? ? ? ? ?




本文轉(zhuǎn)自我愛物聯(lián)網(wǎng)博客園博客,原文鏈接:http://www.cnblogs.com/yydcdut/p/3881592.html,如需轉(zhuǎn)載請自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的Java存储密码用字符数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。