SecureRandom
- Kotlin kursu
- İleri seviye
- Ders 76/83
- 5 dk
SecureRandom ile güvenli rastgele öğrenirsin.
SecureRandom ile kriptografik rastgele
SecureRandom, kriptografik olarak güçlü rastgele değer üretir. nextBytes ile bayt, nextInt ile tam sayı verilir. java.util.Random'dan daha yavaş ama daha güvenlidir.
Örnek: val random = SecureRandom(); val bytes = ByteArray(8); random.nextBytes(bytes). bytes 8 rastgele baytla dolar. Bu kalıp, anahtar ve token üretimi için kullanılır. setSeed ile tohum verilebilir ama öngörülebilirlik riski taşır.
nextBytes ile bayt üretimi
SecureRandom.nextBytes(bytes), verilen bayt dizisini rastgele değerlerle doldurur. Bu, anahtar ve IV üretimi için yaygın bir yöntemdir.
Örnek: val key = ByteArray(16); SecureRandom().nextBytes(key). Bu, 16 baytlık rastgele bir AES-128 anahtarı üretir. Üretilen baytlar öngörülemez; her çağrı farklıdır. Bu kalıp, her kullanıcı için benzersiz anahtar üretmek için kullanılır.
Uygulama SecureRandom ile bayt boyutu
main içinde val random = SecureRandom() oluştur, val bytes = ByteArray(8) ayır, random.nextBytes(bytes) çağır ve println(bytes.size) yazdır.
Başlangıç kodu
import java.security.SecureRandom
// main'de SecureRandom oluştur
// 8 baytlık diziye rastgele doldur, boyutunu yazdırÖrnek çözüm
import java.security.SecureRandom
fun main() {
val random = SecureRandom()
val bytes = ByteArray(8)
random.nextBytes(bytes)
println(bytes.size)
}Beklenen çıktı
8
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 SecureRandom'ın java.util.Random'dan farkı nedir?
- Daha hızlıdır
- Daha az rastgele
- Kriptografik olarak daha güvenli Doğru cevap
- Sadece Int üretir
Açıklama: SecureRandom kriptografik olarak güçlüdür.
2 SecureRandom parçalarını eşle
| Kavram | Anlamı |
|---|---|
SecureRandom() |
Nesne |
nextBytes(bytes) |
Bayt üretimi |
ByteArray(16) |
Buffer |
kriptografik |
Güç |
3 nextBytes çağrısını tamamla
val bytes = ByteArray(8)
SecureRandom().____(bytes)
val bytes = ByteArray(8)
SecureRandom().nextBytes(bytes)
Açıklama: nextBytes bayt dizisini doldurur.