web-dev-qa-db-fra.com

Crypter la chaîne en TypeScript et décrypter en C # à l'aide de l'algorithme AES (Advanced Encryption Standard Algorithm)

J'ai du mal à implémenter le chiffrement en TypeScript et le déchiffrement en C #. Avant de poster une question ici, je l'ai fait sur Google et j'ai trouvé des liens, mais ces liens sont liés à JavaScript et non à TypeScript.

Crypter en javascript et décrypter en C # avec l'algorithme AES

crypter le texte en utilisant la bibliothèque cryptojs dans angular2

Comment importer des modules npm non-core dans Angular 2 par exemple (pour utiliser une bibliothèque de chiffrement)?

J'ai suivi les liens ci-dessus pour implémenter le concept de cryptage/décryptage dans mon application actuelle.

Ceci est le code que j'ai écrit dans myservice.ts

    //import { CryptoJS } from 'node_modules/crypto-js/crypto-js.js';
    //import 'crypto-js';
    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));

Avant d'ajouter les lignes de code ci-dessus dans myservice.ts , j'ai ajouté la dépendance en tant que "crypto-js" : "^ 3.1.9-1" dans le fichier package.json .

Après avoir ajouté la dépendance ci-dessus dans package.json, j'ai ensuite restauré les packages avec succès. Mais toujours, CryptoJS affiche une erreur dans myservice.ts comme ne peut pas trouver le nom comme CryptoJS .

Pouvez-vous me dire comment importer le CryptoJS à partir de modules de nœuds et également comment crypter la chaîne en TypeScript et décrypter la même chaîne en C # à l'aide de l'algorithme de sécurité avancé (AES)?

Pradeep

6
Pradeep

J'ai eu un problème similaire. J'utilise Angular 4/Angular-Cli 1.0.0. Ce qui a fonctionné pour moi:

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

Après ces deux commandes, référencez la bibliothèque crypto-js dans la bibliothèque angular-cli.json fichier, dans le tableau "scripts". Dans mon cas:

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

Vous remarquerez que dans le répertoire node_modules/@ types , vous aurez un sous-répertoire crypto-js. Mettez donc une référence au fichier node_modules/@types/crypto-js/index.d.ts dans votre code, en utilisant un triple -slash directive , donc le compilateur sait que le fichier de typage est nécessaire pour compiler ce fichier de module:

/// <reference path="relative_path_to_cypto_folder/index.d.ts" />

Alternativement, vous pouvez également utiliser l'attribut "types" au lieu de "path", car vous faites référence à une définition de typages dans node_modules/@ types:

/// <reference types="crypto-js" />

Après cela, vous pouvez utiliser votre code exactement tel qu'il est:

/// <reference types="crypto-js" />

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));
14
julianobrasil