Saltar al contenido

Encriptar el string En TypeScript y descifre en C # usando el algoritmo estándar de cifrado avanzado (AES)

Este team de redactores ha estado horas buscando la solución a tus dudas, te dejamos la solución de modo que deseamos resultarte de mucha ayuda.

Solución:

Tuve un problema similar. Estoy usando Angular 4 / Angular-Cli 1.0.0. Lo que funcionó para mí:

npm install crypto-js --save
npm install @types/crypto-js --save

Después de estos dos comandos, consulte el crypto-js biblioteca en el angular-cli.json archivo, en los “scripts” array. En mi caso:

"scripts": [
    "../node_modules/crypto-js/crypto-js.js"
  ]

Notarás que en el node_modules / @ tipos directorio, tendrá un subdirectorio crypto-js. Así que pon una referencia al node_modules/@types/crypto-js/index.d.ts en su código, usando una directiva de triple barra, para que el compilador sepa que el archivo de mecanografía es necesario para compilar ese archivo de módulo:

/// 

Alternativamente, también puede utilizar “tipos” attribute en lugar de “ruta”, ya que está haciendo referencia a una definición de tipificación dentro de node_modules / @ types:

/// 

Después de eso, puede usar su código exactamente como está:

/// 

import * as CryptoJS from 'crypto-js';


var key = CryptoJS.enc.Utf8.parse('7061737323313233');
var iv = CryptoJS.enc.Utf8.parse('7061737323313233');
var encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse("It works"), key,
    
        keySize: 128 / 8,
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    );

var decrypted = CryptoJS.AES.decrypt(encrypted, key, 
    keySize: 128 / 8,
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
);

console.log('Encrypted :' + encrypted);
console.log('Key :' + encrypted.key);
console.log('Salt :' + encrypted.salt);
console.log('iv :' + encrypted.iv);
console.log('Decrypted : ' + decrypted);
console.log('utf8 = ' + decrypted.toString(CryptoJS.enc.Utf8));

npm instal crypto-js

//Inside imports of your TS file include 
import * as CryptoJS from 'crypto-js';

// Declare this key and iv values in declaration
private key = CryptoJS.enc.Utf8.parse('4512631236589784');
private iv = CryptoJS.enc.Utf8.parse('4512631236589784');

// Methods for the encrypt and decrypt Using AES
encryptUsingAES256() 
    var encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(JSON.stringify("Your Json Object data or string")), this.key, 
        keySize: 128 / 8,
        iv: this.iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    );
    console.log('Encrypted :' + encrypted);
    this.decryptUsingAES256(encrypted);
    return encrypted;


decryptUsingAES256(decString) 
    var decrypted = CryptoJS.AES.decrypt(decString, this.key, 
        keySize: 128 / 8,
        iv: this.iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    );
    console.log('Decrypted : ' + decrypted);
    console.log('utf8 = ' + decrypted.toString(CryptoJS.enc.Utf8));


El código C # para codificar o decodificar está aquí.

public class encr 
    public static string DecryptStringAES(string cipherText) 
        var keybytes = Encoding.UTF8.GetBytes("4512631236589784");
        var iv = Encoding.UTF8.GetBytes("4512631236589784");

        var encrypted = Convert.FromBase64String(cipherText);
        var decriptedFromJavascript = DecryptStringFromBytes(encrypted, keybytes, iv);
        return decriptedFromJavascript;
    
    private static string DecryptStringFromBytes(byte[] cipherText, byte[] key, byte[] iv)  key.Length <= 0) 
            throw new ArgumentNullException("key");
        
        if (iv == null 

    public static string EncryptStringAES(string plainText) 
        var keybytes = Encoding.UTF8.GetBytes("4512631236589784");
        var iv = Encoding.UTF8.GetBytes("4512631236589784");

        var encryoFromJavascript = EncryptStringToBytes(plainText, keybytes, iv);
        return Convert.ToBase64String(encryoFromJavascript);
    

    private static byte[] EncryptStringToBytes(string plainText, byte[] key, byte[] iv)  iv.Length <= 0) 
            throw new ArgumentNullException("key");
        
        byte[] encrypted;
        // Create a RijndaelManaged object
        // with the specified key and IV.
        using(var rijAlg = new RijndaelManaged()) 
            rijAlg.Mode = CipherMode.CBC;
            rijAlg.Padding = PaddingMode.PKCS7;
            rijAlg.FeedbackSize = 128;

            rijAlg.Key = key;
            rijAlg.IV = iv;

            // Create a decrytor to perform the stream transform.
            var encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV);

            // Create the streams used for encryption.
            using(var msEncrypt = new MemoryStream()) 
                using(var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) 
                    using(var swEncrypt = new StreamWriter(csEncrypt)) 
                        //Write all data to the stream.
                        swEncrypt.Write(plainText);
                    
                    encrypted = msEncrypt.ToArray();
                
            
        
        // Return the encrypted bytes from the memory stream.
        return encrypted;
    

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



Utiliza Nuestro Buscador

Deja una respuesta

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