JavaRush /Java Blog /Random-TK /Sowal-jogap: Näme üçin paroly Java-da setir däl-de, nyşan...

Sowal-jogap: Näme üçin paroly Java-da setir däl-de, nyşan massiwinde saklamak has gowudyr?

Toparda çap edildi
Şeýle soragy Java Junior wezipesi üçin geçirilen söhbetdeşlikde eşidip bilersiňiz. Friendöne dostumdan Tehniki Gurşun wezipesi barada söhbetdeşlik wagtynda soraldy.
Sowal-jogap: Näme üçin paroly Java-da setir däl-de, nyşan massiwinde saklamak has gowudyr?  - 1
Bularyň ikisi Stringhem, nyşanlaryň massiwi tekst maglumatlary saklamak üçin ulanylyp bilner. Emma belli bir mesele üçin birini ýa-da birini saýlamak, henizem şuňa meňzeş ýagdaýa duş gelmedik bolsaňyz kyn. Şeýle-de bolsa, dostumyň belleýşi ýaly, islendik sorag String, adatça üýtgewsizlik () diýilýän setirleriň aýratyn emlägini öz içine alýar Immutablewe söhbetdeşlikde bu pursatdan peýdalandy. char []Şeýlelik bilen, parolyňyzy saklamak üçin ulanmagyň däl-de, ulanmagyň birnäçe sebäbine seredeliň String.

Sebäp 1. Setirler üýtgewsiz

Java-da setirler üýtgewsiz bolansoň, ýönekeý tekst parolyňyz, zibil ýygnaýjy arassalanýança ýatda saklanar. StringGaýtadan ulanmak üçin ulanylýandygy sebäpli String pool, parolyň uzak wagtlap ýatda galmagy gaty ähtimal, bu asla howpsuz däl.
Java String basseýni, ýörite ýerde - üýşmeleňde ýerleşýän howuz ýa-da obýektler (setirler). Java-da setir maglumatlaryň iň köp ýaýran görnüşlerinden biridir. Bu ýönekeý görnüş däl-de, bir zat, sebäbi gaty serişde talap edýär. Şeýlelik bilen, dört simwoldan ybarat bir setir saklamak üçin 56 baýt ýady bölmeli. Şonuň üçin setirler, beýleki zatlar ýaly, üýşmeleňde saklanýar.
Memoryat zibilhanasyna girip bilýän islendik adam paroly ýönekeý tekstde däl-de, kodlanan paroly ulanmagyň gowy sebäbi bolan aç-açan tekstde tapyp biler. Setirler üýtgewsiz bolany üçin, mazmunyny üýtgedip bolmaz. Islendik üýtgeşiklik täze setir döreder. Emma char [], ​​onuň elementleriniň islendigini nol ýa-da boş nyşan bilen çalşyp bilersiňiz. Şeýlelik bilen, paroly simwol massiwinde saklamak, paroly saklamak howpuny aç-açan azaldar.

Sebäp 2. Awtorlaryň teklipleri

Java-yň özi (elbetde, döredijileriniň üsti bilen) getPassword ()synpdan JPasswordFieldgaýdyp gelýän usuly ulanmagy maslahat berýär char []. Könelişen usuly hem synap bilersiňiz getText (). Näme üçin dil awtorlarynyň maslahatlaryny ýerine ýetirmeli däl?

Sebäp 3. Çap et

Bir görnüşi bilen, Stringsetirde saklanýan tekstiň gündelik faýlda ýa-da konsolda çap edilmegi howpy bar. Şol bir wagtyň özünde, ulansaňyz Array, massiwiň mazmunyny çap etmersiňiz, diňe ýadynda ýerleşer. Elbetde, bu düýpli sebäp däl, ýöne şonda-da manysy bar.
String strPassword = "Unknown";
char [] charPassword = new char [] {'U', 'n', 'k', 'w', 'o', 'n'};
System.out.println ("String password:" + strPassword);
System.out.println ("char password:" + charPassword);

String password: Unknown
Character password: [C@110b053
Elbetde, char []parollary saklamak üçin Java-dan peýdalanmak howsala däl. Haslar bilen işlemek we açarsözleri aç-açan tekstde saklamak däl-de, şifrlemek ýaly howpsuzlyk çäreleri görmeli. Elbetde, tassyklamak prosedurasyndan soň derrew ýatdan pozuň. “Javarevisited” -iň materiallaryna esaslanýar
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION