后端工具
package com.kingyon.backend.snake;
import java.io.ByteArrayOutputStream;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
import javax.crypto.Cipher;
//java 后端
public class RsaUtlis {
//私钥
private static String privateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMuBZbw5eskz2Q2nDbeYvcaNgduTLUgsnkPnQ0dx0+1uc8j/LpexU+ZovQhl0kmKR+4nszqKRrpnyUrCe93GHt/Nq7PIHiMsSzKuCqfvpobfayne29NtXz7zbVa+w8Miv1unMkwMeLtkfQDRP00ulgc9nbSg9NWteNgT4C1VfOPjAgMBAAECgYBeAom/2QHK3sO/VdO1Y78PcSFzENtTQyFdlwDyiTfwsByW1qNsegObJfllXrw1Mscl0nsuaOBhjj5j5dIY0kRCJa9Lt/b+LcZdGcg8/hMFg1NBx5FSW0yZ79gKeXk8jRImkDwn6TFOb/2wKkut7h9q/0qp/EFkgwko5Wy8V9waYQJBAPVQalyTqneTBS9a1FprVCYVGO1S0yNrPrYWWhy2gax1mBPsAy2U1lWCwTHo6BAy95K4MoVhBCNBevOfPDi7QDMCQQDUXsI8EoZDOIeZT7Pe90R+w8EUaiErFvjjQpa17OdNsbs8DhyEVcFqKf9KaJTg/H22ziAjpkeQCWGv69PXeV2RAkEA0qJJsVPZevJx8Uc8LqcZidlzndMQF8lt/0sR9LWAgmQ2QGTWFb1GjAXJfOFO4RniGcivGHdE5kDDIYwIWW3uoQJAc8P346FBeTE+ka8l4PwvZV62SLeVvxR1tgSdfSxX5j1lUFZs6yKIHaQpGtmpln9s1BLG6EgDKJxEmQ5X21S4UQJAc3KdBHa+b+H1AJaRHV2Hhe3Bfxe4TOT9sd+Tm9KDlS3q7tz+r8c5m3YQ1iThwgspAImzf40TKK8DU75iRc40qA==";
//公钥
private static String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLgWW8OXrJM9kNpw23mL3GjYHbky1ILJ5D50NHcdPtbnPI/y6XsVPmaL0IZdJJikfuJ7M6ika6Z8lKwnvdxh7fzauzyB4jLEsyrgqn76aG32sp3tvTbV8+821WvsPDIr9bpzJMDHi7ZH0A0T9NLpYHPZ20oPTVrXjYE+AtVXzj4wIDAQAB";
/**
* RSA最大加密明文大小
*/
private static final int MAX_ENCRYPT_BLOCK = 117;
/**
* RSA最大解密密文大小
*/
private static final int MAX_DECRYPT_BLOCK = 128;
/**
* 获取密钥对
*
* @return 密钥对
*/
public static KeyPair getKeyPair() throws Exception {
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(1024);
return generator.generateKeyPair();
}
/**
* 获取私钥
*
* @param privateKey 私钥字符串
* @return
*/
public static PrivateKey getPrivateKey(String privateKey) throws Exception {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
byte[] decodedKey = Base64.getDecoder().decode(privateKey.getBytes());
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(decodedKey);
return keyFactory.generatePrivate(keySpec);
}
/**
* 获取公钥
*
* @param publicKey 公钥字符串
* @return
*/
public static PublicKey getPublicKey(String publicKey) throws Exception {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
byte[] decodedKey = Base64.getDecoder().decode(publicKey.getBytes());
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(decodedKey);
return keyFactory.generatePublic(keySpec);
}
/**
* RSA加密
*
* @param data 待加密数据
* @param publicKey 公钥
* @return
*/
public static String encrypt(String data, PublicKey publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
int inputLen = data.getBytes().length;
ByteAr