Développement d'applications - cybersécurité - radiogéolocalisation et radionavigation
Notre savoir faire
Technologies et services
Notre entreprise
Cyberens est une société de conseil fondée en 2010 qui est spécialisée dans les technologies de défense, de sécurité et de l’espace. Située à Bordeaux , nos clients sont français et internationaux.
TMS Cryptography pack 2.5.0.0: chiffrer un message en utilisant une clé dérivée d'un mot de passe
Cet exemple utilise les algorithmes Argon2d, ed25519 et AES avec les composants TArgon2KeyDerivation, TECCEncSign et TAESEncryption.
Alice veut envoyer un message à Bob, donc elle possède sa clé privée (il utilise l’algorithme ed25519).
Le mot de passe peut être demandé à Alice en utilisant une boîte de dialogue.
Alice utilise la fonction suivante pour chiffrer un message à Bob :
function EncryptMessageToBob(password: string; input: string; BobPublicKey: string): string;
var
aesKey: string;
eccCipher, aesCipher : string;
begin
Argon2.StringSalt := ‘0123456789012345’;
Argon2.outputFormat := raw;
aesKey := Argon2.GenerateKey(password);
ECC.PublicKey := BobPublicKey;
eccCipher := ecc.Encrypt(aesKey);
aes.Key := aesKey;
aesCipher := aes.Encrypt(input);
Result := eccCipher + ‘+’ + aesCipher;
end;
Pour déchiffrer le message d’Alice, Bob utilise la fonction suivante :
function DecryptMessageFromAlice(input: string; BobPrivateKey: string): string;
var
eccCipher, aesCipher: string;
aesKey: string;
begin
eccCipher := input.subString(0, Pos(‘+’, input) – 1);
aesCipher := input.subString(Pos(‘+’, input), input.Length);
ECC.PrivateKey := BobPrivateKey;
aesKey := ecc.Decrypt(eccCipher);
aes.Key := aesKey;
Result := aes.Decrypt(aesCipher);
end;
Pour les messages suivants, Alice et Bob peuvent enregistrer la clé aesKey et ne pas envoyer la chaîne eccCipher.
Syntaxe du code grâce à http://markup.su/highlighter/
©copyright Cyberens 2024