使用高级加密标准算法(AES)在TypeScript中加密字符串并在C#中解密

我很难在C#中使用打字稿和解密来实现加密。 在这里发布问题之前,我做了谷歌并找到了一些链接,但这些链接与JavaScript有关,而不是打字稿。

使用AES算法在javascript中加密并在C#中解密

使用angular2中的cryptojs库加密文本

如何在Angular 2中导入非核心npm模块,例如(使用加密库)?

我按照上面的链接,在我当前的应用程序中实现加密/解密概念。

这是我在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)); 

在我在myservice.ts中添加上面的代码行之前,我在package.json文件中添加了依赖为“crypto-js”:“^ 3.1.9-1”

在package.json中添加了上面的依赖项后,我成功恢复了包。 但是仍然CryptoJS在myservice.ts中显示错误,例如找不到名称为CryptoJS

你能告诉我如何从节点模块导入CryptoJS,还告诉我如何使用高级安全算法(AES)加密打字稿中的字符串并在C#中解密相同的字符串?

普拉迪普

我有一个类似的问题。 我正在使用Angular 4 / Angular-Cli 1.0.0。 什么对我有用:

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

在这两个命令之后,在“scripts”数组中引用angular-cli.json文件中的crypto-js库。 就我而言:

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

您会注意到在node_modules / @ types目录中,您将拥有一个crypto-js子目录。 因此,使用triple-slash指令在代码中引用node_modules/@types/crypto-js/index.d.ts文件,因此编译器知道编译文件是编译该模块文件所必需的:

 ///  

或者,您也可以使用“types”属性而不是“path”,因为您在node_modules / @ types中引用了一个typings定义:

 ///  

之后,您可以完全按原样使用您的代码:

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