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.

1
demandé sur Mayur Shedage 2018-07-26 07:29:36

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

1
répondu Mayur Shedage 2018-07-26 05:07:39

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

0
répondu 2018-07-29 11:18:12

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))
0
répondu Touffy 2018-07-29 12:17:15

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>
0
répondu 2018-07-30 05:30:36