美文网首页
angular4AES加密和解密、RSA加密和MD5签名

angular4AES加密和解密、RSA加密和MD5签名

作者: zyanfly | 来源:发表于2019-05-21 14:40 被阅读0次

    废话不多说,上干货(本文不涉及后端)

    AES加密

    AES 在密码学中又称 Rijndael 加密法,用来替代原先的 DES,已经被多方分析且广泛使用。
    在部分websocket的通讯中为了防止用户的聊天内容被窃取,采用了AES加密
    使用npm安装crypto-js

    npm install crypto-js --save
    

    创建一个加密服务:

    // crypto.service.ts
    import { Injectable } from '@angular/core';
    import * as Crypto from "crypto-js";
    
    @Injectable()
    export class CryptoService {
      private key: string;
      constructor() {
        this.key = Crypto.enc.Latin1.parse('秘钥');
        this.iv = Crypto.enc.Latin1.parse('秘钥偏移量')
      }
    
      /**
       * AES加密
       * @param {Object} data 加密对象
       * @description 用于对ws通讯内容的加密
       * @return {String} 加密后的字符串
       */
      encrypt(data){
        let res = Crypto.AES.encrypt(JSON.stringify(data), this.key, {
          iv: this.iv,
          mode: Crypto.mode.CBC,
          padding: Cryto.pad.Pkcs7
        }).toString();
        return res;
      }
    
      /**
       * AES解密
       * @param {String} data 解密对象
       * @description 用于对ws通讯内容的解密
       * @return {String} 解密后的对象字符串,可用JSON转为对象
       */
      decrypt(data) {
        let res = Crypto.AES.decrypt(data, this.key, {
          iv: this.iv,
          mode: Crypto.mode.CBC,
          padding: Crypto.pad.Pkcs7
        })
        return Crypto.enc.Utf8.stringify(res);
      }
    }
    

    在使用到的组件中,可以直接import此服务使用加密和解密功能了。

    MD5签名

    MD5签名主要作用是验证数据的一致性,确保这个数据是你真正的用户发送的,而非伪造的数据

    npm install ts-md5 --save
    

    在上面的服务中引入

    import { Md5 } from 'ts-md5/dist/md5';
    // 使用
    sign = Md5.hashStr('需要签名的数据'+md5Key);
    

    使用MD5签名后得出一段字符串,可以拼接在数据文本后面或者其他方式传送给后台用于验签

    RSA加密

    npm install jsrsasign --save
    
    import jsrsasign from 'jsrsasign';
    
    /**
       * RSA加密、签名
       * @param data 加密字符串
       * @return {String} string,加密后的base64格式字符串
       */
    rsaEncrypt(data){
      let enc, base64Sign;
      let rsa = new jsrsasign.RSAKey();
      rsa = jsrsasign.KEYUTIL.getKey(this.publicKey)
      enc = jsrsasign.KJUR.crypto.Cipher.encrypt(data, rsa);
      base64Sign = jsrsasign.hextob64(enc);
      return base64Sign;
    }
    

    相关文章

      网友评论

          本文标题:angular4AES加密和解密、RSA加密和MD5签名

          本文链接:https://www.haomeiwen.com/subject/unxjzqtx.html