Java-参数RSA加密解密

Java-参数RSA加密解密

RSA加密和解密是一种常用的非对称加密算法,通过使用公钥进行加密,使用私钥进行解密。

RSA加密过程如下:

  1. 选择两个不同的质数p和q,计算它们的乘积n=pq,同时计算φ(n)=(p-1)(q-1)。
  2. 选择一个与φ(n)互质的正整数e,1<e<φ(n),称为公钥。
  3. 计算e的模反元素d,使得e*d ≡ 1 mod φ(n),称为私钥。
  4. 将明文M转换成整数m,满足0≤m<n。
  5. 使用公钥(e,n)进行加密,计算密文C = m^e mod n。
  6. 将密文C发送给接收方。

RSA解密过程如下:

  1. 接收到密文C。
  2. 使用私钥(d,n)进行解密,计算明文M = C^d mod n。
  3. 将整数m转换成明文M。

需要注意的是,RSA算法要求使用的质数p和q足够大,并且要保证e与φ(n)互质,以确保加密的安全性。

 //公钥
@Value("${wx.publicKey}")
private String publicKey;
//私钥
@Value("${wx.privateKey}")
private String privateKey;

public static final String TYPE = "2";
public String plaintextCipher(String req,String type) {
    if (type == null || type.trim().length() == 0){
        type = "1";
    }
    RSA rsa = new RSA(AsymmetricAlgorithm.RSA_ECB_PKCS1.getValue(), privateKey, publicKey);
    String result = "";
    if("1".equals(type)){
        //加密
        try{
            byte[] bytes = rsa.encrypt(req, KeyType.PublicKey);
            result = new String(Base64.encodeBase64(bytes));
        } catch (Exception e) {
            System.out.println("数据错误,请重新尝试。");
        }
        System.out.println("result="+result);
    }else{
        //解析
        String decryptByPrivate = "";
        try{
            decryptByPrivate = rsa.decryptStr(req, KeyType.PrivateKey);
        } catch (Exception e) {
            System.out.println("数据错误,请重新尝试。");
        }
        result = decryptByPrivate;
        System.out.println("result="+result);
    }
    return result;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值