Saltar al contenido

Cifrado y descifrado JavaScript AES (Estándar de cifrado avanzado)

Por fin después de tanto trabajar hemos hallado el resultado de esta dificultad que muchos lectores de nuestro sitio web han presentado. Si tienes algo más que compartir no dejes de dejar tu comentario.

Solución:

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='))

AES es un método de cifrado y descifrado muy simple y potente. Consulte mi ejemplo a continuación que será muy fácil de usar en su código listo.

Solo necesito llamar encryptMessage y decryptMessage función Ya proporcioné un ejemplo de ejecución a continuación.

Cómo llamar a estos métodos:

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'))



	E2EE
	




También puede consultar mi github repositorio de código para más referencias.

https://github.com/shedagemayur/JavaScriptCode/tree/master/AES

¿Por qué querrías implementar AES en JavaScript? sería extremadamente lento en comparación con una implementación nativa (o wasm). Afortunadamente, tiene acceso a una implementación nativa directamente en el navegador (incluso IE11 si cambia algunas cosas). Es muy rápido (cientos de veces más rápido según algunos puntos de referencia publicados hace un tiempo en el blog de Webkit) y no requiere bibliotecas de 50 kb.

Usando GCM en este ejemplo, pero puede usar el modo CTR si no necesita la autenticación:

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))

Eso resultará en cyphertext que contiene un ArrayBuffer con el encriptado string y una etiqueta de autenticación de 4 bytes (que es específica de GCM, otros modos AES solo producirán los datos cifrados). Puede descifrarlo con la misma facilidad, siempre que tenga la key y IV utilizado para el cifrado.

const cleartext = await crypto.subtle.decrypt(name: 'AES-GCM', tagLength: 32, iv, key, cyphertext)
console.log(new TextDecoder().decode(cleartext))

Tienes la opción de defender nuestra faena exponiendo un comentario y dejando una puntuación te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4.5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *