Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

Sorunuz mu var? Belki de çoktan soruldu..

0
Şifreler için Java'da neden String yerine char[] kullanımı tercih ediliyor.

Açık 1 Cevaplar 53 Gösterim Java
Soruyu beğendiğim için paylaşıyorum.

JSE swing kütüphanesinde JPasswordField.getPassword() metodu neden String yerine char[](char array) dönderiyor? String'e göre faydası nedir?

İyi çalışmalar.

1 cevap

2

Bu sorunun cevabi icin birkac guzel aciklama var

  • char[] system.out.print metodu ile yazıldığı zaman ekranda şifrenizi görmeyeceksiniz ki yanlışlıkla loglara veya ekrana log basmamak için kullanışlı oluyor.
  • Diğer açıklama ki bana daha güzel bir sebep olarak göründü. Java'nın memory yönetimine baktığınız zaman string nesnelerini özel bir yapı ile bir listede tuttuğunu ve yeni bir string gerekirse öncelikle string bilgisinin bu listede olup olmadığı kontrol edilir. Eğer varsa bu string'e ait olan adres kullanılır. Yani her string için yeniden yeniden hafızada yer ayrılmaz. Bu durumda şifrenizi string bir değişkene atadıysanız ve bu değişkeni de başka yerlede kullandıysanız. Sizin şifre bilginiz memory üzerinde duruyor ve silinmemiş demektir. Hatta işiniz bittikten sonra hiç kullanmasanız bile Java bu string listesini ne zaman temizleniyor kesin değil. Yani hafızadan silineceğinin bir garantisi yok. Bu durumda başka bir uygulama veya yöntemlerle uygulamanıza ait bir memory dump alınırsa şifre veya şifreleriniz hafızada direk açık olarak bulunduğu için erişilebilir olacak. Şifre bilgisi char[] içinde bulunsaydı, işiniz bittiği zaman garbage collection devreye girdikten sonra silinecekti veya siz başka bir değer atayarak hafızadaki değeri değiştirebilecektiniz. Java'nın string kullanımını otomatik hale getirmesinden dolayı böyle bir konu meydana geliyor ve char[] kullanılmasının daha mantıklı olduğu düşünülüyor.
İyi çalışmalar.
15 Aralık 2015 kenan (2,833 puan) cevapladı
...