Penghasil Nomor Acak Pseudo yang Aman Secara Kriptografis lintas platform untuk Delphi
Saya menginginkan generator nomor acak lintas platform yang mudah digunakan dan lebih dapat diandalkan daripada generator Random bawaan. Ini modular sehingga Anda cukup memasukkan bagian yang Anda inginkan. Memanfaatkan platform penyedia acak yang aman untuk setiap platform, dengan antarmuka penyedia umum. Saya hanya mengujinya di Win32, Win64, Android64, dan Linux64.
Ada beberapa tes dasar dan contoh aplikasi. Terbuka untuk umpan balik, menerbitkan laporan, dan permintaan penarikan. Apalagi jika Anda ingin mengujinya di hardware Apple.
Penafian : Pastikan Anda memahami kode apa pun sebelum menggunakannya untuk hal penting. Hanya karena saya menyebutnya "Aman Secara Kriptografis" tidak berarti ini aman atau cocok untuk kriptografi.
uses CSPRNG, CSPRNG.Interfaces;
// /
var rng: ICSPRNGProvider := GetCSPRNGProvider;
Writeln(rng.GetFloat);
Writeln(rng.GetUInt64);
Writeln(rng.GetBase64);
type
ICSPRNGProvider = interface
// Generates a specified number of cryptographically secure random bytes.
function GetBytes ( const Count: Integer): TBytes;
// Generates a cryptographically secure random unsigned 32-bit integer.
function GetUInt32 ( const max: UInt32 = High(UInt32)): UInt32;
// Generates a cryptographically secure random signed 32-bit integer.
function GetInt32 ( const max: Int32 = High(Int32)): Int32;
// Generates a cryptographically secure random signed 64-bit integer.
function GetInt64 ( const max: Int64 = High(Int64)): Int64;
// Generates a cryptographically secure random unsigned 64-bit integer.
function GetUInt64 ( const max: UInt64 = High(UInt64)): UInt64;
// Generates a cryptographically secure random float between 0 and 1
function GetFloat : Double;
// Generates a BASE64 encoded random string
function GetBase64 ( const len: Integer = 1024 ): String;
end ;
Sebagian besar fungsi berasal dari implementasi dasar, dengan implementasi khusus platform menyediakan fungsi GetBytes
.