关于RSA
1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。从那时直到现在,RSA算法一直是最广为使用的"非对称加密算法"。毫不夸张地说,只要有计算机网络的地方,就有RSA算法。这种算法非常可靠,密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长RSA密钥是232个十进制位,也就是768个二进制位,因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全,当然量子计算机除外。
常见非对称加密算法有RSA、ECC、Elgamal等
关于RSA的实现原理不在此叙述…以下重点介绍后端java前端vue如何实现接口签名
java中实现
1、密码对的生成、存储、获取、RSA解密
import javax.crypto.Cipher;
import java.security.*;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
/**
* 作者 :
* 类名 :RSAUtil.java
* 作用 :RSA非对称加解密
* 时间 :2022-01-27 09:35
*/
public class RSAUtil {
//私钥key
public static final String KEY_TYPE_PRIVATE_KEY = "privateKey";
//公钥key
public static final String KEY_TYPE_PUBLIC_KEY = "publicKey";
/**
* 密钥长度与原文长度对应,越长速度越慢
* 1024bit 密钥 能加密明文最大的长度是 1024/8 -11 = 117 byte
* 2048bit 密钥 能加密明文最大的长度是 2048/8 -11 = 245 byte
*/
private final static int KEY_SIZE = 1024;
/**
* 生成公钥和私钥
* @return map-->privateKey、publicKey
*/
public static Map<String, String> generateKey() {
Map<String, String> resultMap = new HashMap<>();
KeyPairGenerator keyPairGenerator = null;
try {
//KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象
keyPairGenerator =