Un générateur de nombres pseudo-aléatoires multiplateforme cryptographiquement sécurisé pour Delphi
Je voulais un générateur de nombres aléatoires multiplateforme facile à utiliser, plus fiable que le générateur aléatoire intégré. Il est modulaire, vous pouvez donc simplement inclure les pièces que vous souhaitez. Utilise le fournisseur aléatoire sécurisé de la plateforme pour chaque plateforme, avec une interface de fournisseur commune. Je ne l'ai testé que sur Win32, Win64, Android64 et Linux64.
Il existe quelques tests de base et un exemple d'application. Ouvert aux commentaires, aux rapports de problèmes et aux demandes d'extraction. Surtout si vous souhaitez le tester sur du matériel Apple.
Avis de non-responsabilité : assurez-vous de comprendre tout code avant de l'utiliser pour quelque chose d'important. Ce n’est pas parce que j’appelle cela « cryptographiquement sécurisé » qu’il est sécurisé ou adapté à la cryptographie.
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 ;
La plupart des fonctionnalités proviennent de l'implémentation de base, l'implémentation spécifique à la plate-forme fournissant la fonction GetBytes
.