angular前台rsa加密 后台rsa解密

本文介绍了如何在Angular应用中使用JSEncrypt库实现RSA公钥加密和私钥解密功能,涉及JSON字符串处理和Base64编码/解码操作。
摘要由CSDN通过智能技术生成
import {Injectable} from '@angular/core';
import * as JsEncryptModule from 'jsencrypt';

@Injectable({
  providedIn: 'root',
})

export class RsaService {
  constructor(){}
  public encrypt(data: string) {//data=JSON.stringify(Object)  将对象转为json字符串
    const PublicKey= 'xxxxxx1024or2048';//公钥
    let encryptor = new JsEncryptModule.JSEncrypt({});//使用该依赖来做rsa加密
    encryptor.setPublicKey(PublicKey);//设置公钥
    const blockSize = 117; // 1024 is 128byte need -11个byte//因为1024是128byte 需要减11个byte我也不知道为啥减。
    let dataBlocks = [];//防止加密的字符串超出1024 ,进行字节分割
    for (let i = 0; i < data.length; i += blockSize) {
      const block = data.slice(i, i + blockSize);
      const encryptedBlock = encryptor.encrypt(block);//对分割后的字节加密
      dataBlocks.push(encryptedBlock);
    }
    const encryptedData = dataBlocks.join('');//最后组装到一起。 注意后台在解析的时候,要按照=号来分组解析,不然默认只解析第一组数据。
const res=btoa(data).replace(/=/g,'');//使用btoa函数对加密数据进行base64转换,(因为=号是补位字符,删除也没关系,所以可以删除。对数据进行进一步的加密)
    return res;
  }
}

//@RequestBody String param
byte[] strByte = Base64.getDecoder().decode(param);//将拿到的数据,base64解密
            String encoderStr = new String(strByte);
            String [] arrStr=encoderStr.split("=");//对解密数据 根据=分组
            String objStr="";
            if(arrStr.length>0){
                for(int i=0;i<arrStr.length;i++){
                    objStr = objStr+ RSAUtil.privateDecrypt(arrStr[i], RSAUtil.getPrivateKey(privateKey));
                }//将解析的数据字符串json拼接
                Gson gson = new Gson();
                AnyObject= gson.fromJson(objStr, AnyObject.class);//json转对象
            }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值