Giriş
Şu satırı dahil ederiz. Random sınıfından kalıtır.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız
nextBytes metodu
Belirtilen diziyi rastgele byte ile doldurur.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Şu satırı dahil ederiz. Random sınıfından kalıtır.
import java.security.SecureRandom;
import java.util.Random;
Bu sınıf Linux'ta /dev/random dosyasını okuduğu için sistemin entropi havuzu boş ise havuzun dolmasını bekleyebiliyor. Bloke olmayan /dev/urandom dosyasını kullanması için şöyle yaparız.
-Djava.security.egd=file:/dev/./urandom
Kötü Kullanım
Şu kullanımda seed verilmiyor.
SecureRandom random = new SecureRandom();
byte[] key = new byte[16];
random.nextBytes(key);
Şöyle yaparız
SecureRandom random = new SecureRandom();
byte[] seed = new byte[32];
random.nextBytes(seed);
random.setSeed(seed);
byte[] key = new byte[16];
random.nextBytes(key);
Açıklaması şöyle
In this example, the application is using a SecureRandom object to generate a 16-byte key, but the SecureRandom object is not properly seeded with random data. This could potentially make the key predictable and vulnerable to attack.One way to fix this vulnerability is to properly seed the SecureRandom object with random data, such as by using a hardware random number generator or by collecting entropy from user input or system events.in this example, we’re first generating a random seed for the SecureRandom object, and then using that seed to properly seed the
constructor
Random random = new SecureRandom();
constructor - string
Şöyle yaparız.SecureRandom secureRandomGenerator = SecureRandom.getInstance("SHA1PRNG");
getInstanceStrong metoduŞöyle yaparız.
// Java 7
SecureRandom random = new SecureRandom();
// Java 8
SecureRandom random = SecureRandom.getInstanceStrong();
ints metoduŞöyle yaparız
SecureRandom random = new SecureRandom();
IntStream stream = random.ints();
longs metodu
Şöyle yaparız
Iterator<Long> iterator = new SecureRandom().longs.distinct().iterator();
Belirtilen diziyi rastgele byte ile doldurur.
Örnek
Şöyle yaparız.
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[20];
random.nextBytes(bytes);
ÖrnekŞöyle yaparız.
Random RANDOM = new SecureRandom();
/**
* Returns a random salt to be used to hash a password.
*
* @return a 16 bytes random salt
*/
public static byte[] getNextSalt() {
byte[] salt = new byte[16];
RANDOM.nextBytes(salt);
return salt;
}
Hiç yorum yok:
Yorum Gönder