Sobes.tech
Middle

Ինչու char[] ավելի նախընտրելի է, քան String-ը գաղտնաբառ պահելու համար։

sobes.tech AI

Պատասխան AI-ից

String օբյեկտները փոփոխական չեն: Դա նշանակում է, որ միանգամից ստեղծելուց հետո, դրանց պարունակությունը չի կարող փոխվել: Եթե դուք պահում եք գաղտնաբառը String-ում, այն կմնա հիշողության մեջ մինչև գարշահոտ հավաքողը այն հեռացնի: Այդ ժամանակ, հարձակում կատարողը կարող է մուտք գործել հիշողություն և կարդալ գաղտնաբառը:

char[] զանգվածները փոփոխական են: Գաղտնաբառը պահելուց հետո, դուք կարող եք բացահայտորեն վերագրել զանգվածի տարրերը, օրինակ, զրո նիշերով: Սա ապահովում է, որ գաղտնաբառը անմիջապես հեռացվի հիշողությունից, երբ այն այլևս անհրաժեշտ չէ, ինչը զգալիորեն նվազեցնում է արտահոսքի ռիսկը:

Բացի այդ, աշխատելով տողերով, կա ռիսկ, որ ավելորդ պատճեններ կստեղծվեն տողերի պուլում (string pool), ինչը նույնպես ավելացնում է գաղտնաբառի մնալու ժամանակը հիշողության մեջ:

// Գաղտնաբառը char[]-ում պահելու և մաքրման օրինակ
char[] password = {'p', 'a', 's', 's', 'w', 'o', 'r', 'd'};

// Գաղտնաբառի օգտագործում (օրինակ, հաստատման համար)
// ...

// Օգտագործումից հետո զանգվածը մաքրել
java.util.Arrays.fill(password, ' ');

// Այժմ գաղտնաբառը հեռացվել է հիշողությունից