您好,我正在尝试在我的应用程序中实现加密。我在前端使用angular(angular-4),在后端使用node js。通过socket.io通过自定义命令进行通信。但基本上,我坚持要在客户端中找到用于RSA加密的适当库。客户端将首先向服务器请求RSA公钥。服务器用密钥响应,但是现在我找不到任何适合使用此公共密钥通过RSA加密数据的库。我已经尝试过node- rsa。以下是代码sn
import * as NodeRSA from 'node-rsa'; @Injectable() export class SecurityService { RSA: any initializeRSA(key: string) { this.RSA = new NodeRSA(); this.RSA.importKey(key) console.log(this.RSA.encrypt('Hello World')); }
但我收到此错误。
Error during encryption. Original error: TypeError: crypt.createHash is not a function at NodeRSA.webpackJsonp.../../../../node-rsa/src/NodeRSA.js.module.exports.NodeRSA.$$encrypt
帮助将不胜感激。
JSEncrypt与角度
https://plnkr.co/edit/sEPK1DcynMphJnGziUVX
我已经使用了JSEncrypt v2.3.0 Lib。
实作
在Angular Project的Asset文件夹中添加JSEncrypt Lib javascript文件。在中添加脚本index.html
index.html
<script src="jsencrypt.js"></script>
因此,它将在所有组件上可用。
在要使用它的组件文件中声明JSEncrypt。
declare var JSEncrypt: any;
内部类声明变量
decrypt = new JSEncrypt(); const privatekey = Private Key goes here; const publickey = Public key goes here; const decryptDataRow = Decrypted data string; this.decrypt.setPrivateKey(privatekey); this.decryptdata = this.decrypt.decrypt(decryptDataRow);
decryptdata 包含结果字符串
decryptdata