基于hutool工具类的RSA加解密JAVA实现

基于hutool工具类的RSA加解密JAVA实现


基于hutool工具包的RSA加解密例子,公钥及私钥可以自动生成,具体可以参考 hutool的官方API文档。依赖 jar包。

<!--所需依赖-->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.5</version>
</dependency>
package tools;

import java.util.Base64;


import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;

/**使用hutool工具类中的rsa工具*/
public class RSAUsing {
	/**
	 * 获取公钥私钥密钥对
	 * */
	static String getKeyPair(RSA rsa){
		StringBuilder rtnStb=new StringBuilder();
		//获得私钥
		//System.out.println(rsa.getPrivateKey());
		rtnStb.append("privateKey: ");
		rtnStb.append(rsa.getPrivateKeyBase64());
		rtnStb.append("\n");
		//获得公钥
		//System.out.println(rsa.getPublicKey());
		rtnStb.append("publicKey: ");
		rtnStb.append(rsa.getPublicKeyBase64());
		return rtnStb.toString();
	}
	
	//加密
	public static String getEncryptString(String str, RSA rsa){
		byte[] encrypt = rsa.encrypt(StrUtil.bytes(str, CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
		return Base64.getEncoder().encodeToString(encrypt);
	}
	
	//解密
	public static String getDecryptString(String str, RSA rsa){
		byte[] aByte = Base64.getDecoder().decode(str);
		byte[] decrypt = rsa.decrypt(aByte, KeyType.PrivateKey);
		return new String(decrypt, CharsetUtil.CHARSET_UTF_8);
	}
	
	public static void main(String[] args) {
		String priKey="MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALihlKU/0qVevy8w39i+7/tG+e7yaQuuDKur6OcQq+yl/QPqdw5jChcPsGr0y8Y/3BgI/BHoUMcPSLhD6ywMa6/HZyObuWaVVE+liShTeOGYGQu0HE557RG7oaLv/QlW3JzSiCVnKDMDbjlKn/1uRJMGvkznliS2E6JLVUF4jwnnAgMBAAECgYAY051l1R2xn/psUZGgFxi0/LfJ8i2+5NIOWYjxXTQJF87ccnA87oNiU3lBAJbQGzEwyDCBBfCqu7rnEDb0ztzB5TFzE/Kkc5Rpo0uxrPNLt2VnAGnsWZYXQi70ny4G1atNZ02pyQOAfKBWQtGGIoMSSi9arWY9b+3aJ3HepMKPbQJBAOPWWRp5AkfC7K3ETGnP5P/oioRczLpvq0pUSP+vZfEEVi4LHRy5125DwAZgE4K7MA1SqXUPMOGZAfMNJ//37AMCQQDPdAYllDetIXO1e4nfUbsyuuol8i0gSPSePFkxqSE0xqe85xcOrqFMUIR5qecZ6I8bl9skiADERoJFFEIBja9NAkB6BF9v2AKqn+/VF928hUQk8UrNnE1gQ1G+2ujFVhAIRcRJoFYU/kormUkLoQSR7OHNIMn0ERCioSj0G8WiRgo1AkEAxp/z8q8Cz8UjoDN0QllivqOv5D0Hb83qSEbHr4CbxogdugQYU3pn/UVqUYKXPnsn6edvbn65HTPVLobC2/HoUQJBAOOtLN1BWlQGorbwhNlPB2tXwVAC6U0M5cbbP5GJD97Rq+K3mawjpK9NEs+P01WubNWLm8F0gbMJhMsJ6NbBfPU=";
		String pubKey="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4oZSlP9KlXr8vMN/Yvu/7Rvnu8mkLrgyrq+jnEKvspf0D6ncOYwoXD7Bq9MvGP9wYCPwR6FDHD0i4Q+ssDGuvx2cjm7lmlVRPpYkoU3jhmBkLtBxOee0Ru6Gi7/0JVtyc0oglZygzA245Sp/9bkSTBr5M55YkthOiS1VBeI8J5wIDAQAB";
		RSA rsa = new RSA(priKey, pubKey);
		String plainTxt="这是个test字符串,这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串这是个test字符串";
		String encryptTxt=getEncryptString(plainTxt, rsa);
		System.out.println(encryptTxt);
		String decryptTxt=getDecryptString(encryptTxt, rsa);
		System.out.println(decryptTxt);
	}
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值