AES cryptage et décryptage JavaScript (Advanced Encryption Standard))
Comment mettre en œuvre le chiffrement et le déchiffrement à l'aide d'AES (Advanced Encryption Standard) en JavaScript.
Why AES (Advanced Encryption Standard) ?
"sécurité: les algorithmes concurrents devaient être jugés en fonction de leur capacité à résister à une attaque, comparativement à d'autres chiffreurs soumis, bien que la force de sécurité devait être considérée comme le facteur le plus important dans la concurrence.
coût: destinés à être publiés sur une base globale, non exclusive et libre de redevances, les algorithmes candidats devaient être évalués sur l'efficacité du calcul et de la mémoire.
4 réponses
AES est une méthode de chiffrement et de déchiffrement très simple et puissante. Veuillez voir mon exemple ci-dessous qui sera très facile à utiliser dans votre code prêt à l'emploi.
il suffit d'appeler encryptMessage
et decryptMessage
. J'ai déjà fourni un exemple d'exécution ci-dessous.
comment appeler ces méthodes:
code.encryptMessage('Welcome to AES !','your_password');
code.decryptMessage('U2FsdGVkX1/S5oc9WgsNyZb8TJHsuL7+p4yArjEpOCYgDTUdkVxkmr+E+NdJmro9','your_password')
let code = (function(){
return{
encryptMessage: function(messageToencrypt = '', secretkey = ''){
var encryptedMessage = CryptoJS.AES.encrypt(messageToencrypt, secretkey);
return encryptedMessage.toString();
},
decryptMessage: function(encryptedMessage = '', secretkey = ''){
var decryptedBytes = CryptoJS.AES.decrypt(encryptedMessage, secretkey);
var decryptedMessage = decryptedBytes.toString(CryptoJS.enc.Utf8);
return decryptedMessage;
}
}
})();
console.log(code.encryptMessage('Welcome to AES !','your_password'));
console.log(code.decryptMessage('U2FsdGVkX1/S5oc9WgsNyZb8TJHsuL7+p4yArjEpOCYgDTUdkVxkmr+E+NdJmro9','your_password'))
<!DOCTYPE html>
<html>
<head>
<title>E2EE</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
</head>
<body>
</body>
</html>
vous pouvez également me GitHub code de dépôt pour plus de références.
https://github.com/shedagemayur/JavaScriptCode/tree/master/AES
ci-dessous code a été travaillé pour moi
encryptMessage: function(messageToencrypt = '', secretkey = ''){
var encryptedMessage = CryptoJS.AES.encrypt(messageToencrypt, secretkey);
return encryptedMessage.toString();
},
decryptMessage: function(encryptedMessage = '', secretkey = ''){
var decryptedBytes = CryptoJS.AES.decrypt(encryptedMessage, secretkey);
var decryptedMessage = decryptedBytes.toString(CryptoJS.enc.Utf8);
return decryptedMessage;
}
Merci
pourquoi voudriez-vous implémenter AES en JavaScript? il serait extrêmement lent par rapport à une mise en œuvre native (ou WAM). Heureusement, vous avez accès à une implémentation native directement dans le navigateur (même IE11 si vous changez quelques choses). Il est très rapide (des centaines de fois plus rapide selon certains repères posté il y a un certain temps sur le blog Webkit ) et il ne nécessite pas 50KB bibliothèques.
utilisant GCM dans ce exemple mais vous pouvez utiliser le mode CTR si vous n'avez pas besoin de l'authentification:
const key = await crypto.subtle.generateKey({name: 'AES-GCM', length: 128}, true, ['encrypt', 'decrypt'])
const text = "confidential message"
// IV must be the same length (in bits) as the key
const iv = await crypto.getRandomValues(new Uint8Array(16))
const cyphertext = await crypto.subtle.encrypt({name: 'AES-GCM', tagLength: 32, iv}, key, new TextEncoder().encode(text))
qui résultera en cyphertext
contenant un ArrayBuffer avec la chaîne cryptée et une étiquette d'authentification à 4 octets (qui est spécifique à GCM, d'autres modes AES ne produiront que les données cryptées). Vous pouvez le déchiffrer aussi facilement, tant que vous avez la clé et IV utilisé pour le cryptage.
const cleartext = await crypto.subtle.decrypt({name: 'AES-GCM', tagLength: 32, iv}, key, cyphertext)
console.log(new TextDecoder().decode(cleartext))
function encrypt(message = '', key = ''){
var message = CryptoJS.AES.encrypt(message, key);
return message.toString();
}
function decrypt(message = '', key = ''){
var code = CryptoJS.AES.decrypt(message, key);
var decryptedMessage = code.toString(CryptoJS.enc.Utf8);
return decryptedMessage;
}
console.log(encrypt('Hello World'));
console.log(decrypt('U2FsdGVkX1/0oPpnJ5S5XTELUonupdtYCdO91v+/SMs='))
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>