Ինչու 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, ' ');
// Այժմ գաղտնաբառը հեռացվել է հիշողությունից