Sobes.tech
Middle

Şifrəni saxlamaq üçün niyə char[] String-dən üstün olur?

sobes.tech Süni İntellekt

AI-dan cavab

String obyektləri dəyişməzdir. Bu, bir sətir yaradıldıqdan sonra onun məzmununun dəyişdirilə bilməyəcəyi deməkdir. Əgər şifrəni Stringdə saxlasanız, o, yaddaşda qalacaq və çöp toplayıcı bu obyekti silənə qədər orada qalacaq. Bu müddət ərzində, hücumçu yaddaşa daxil olub şifrəni oxuya bilər.

char[] massivləri dəyişdirilə bilər. char[] içində saxlanılan şifrə istifadə edildikdən sonra, massiv elementlərini açıq şəkildə yenidən yaza bilərsiniz, məsələn, null simvolları ilə. Bu, şifrənin istifadə edilən kimi yaddaşdan silinməsini təmin edir və bu, sızma riskini əhəmiyyətli dərəcədə azaldır.

Əlavə olaraq, sətirlərlə işləyərkən, string hovuzunda əlavə nüsxələr yaratma riski var, bu da şifrəni yaddaşda saxlama müddətini artırır.

// Şifrəni char[] kimi saxlama və təmizləmə nümunəsi
char[] password = {'p', 'a', 's', 's', 'w', 'o', 'r', 'd'};

// Şifrə istifadə edilərkən (məsələn, autentifikasiya üçün)
// ...

// İstifadədən sonra array-i təmizləyin
java.util.Arrays.fill(password, ' ');

// İndi şifrə yaddaşdan silinib