写在最前面,RSA是一种非对称加密算法,使用不同的公钥和私钥进行加密和解密。
下面是使用RSA进行加密和解密的代码示例:
前端:使用CryptoJS进行RSA加密
在前端JavaScript中,使用jsencrypt
库来进行RSA加密:
- 首先引入
jsencrypt
库:这里要是不能使用CDN进行,可以访问网址下载到本地进行~
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsencrypt/3.0.0-beta.1/jsencrypt.min.js"></script>
- 修改
encryptSQL
函数来使用RSA公钥进行加密:
function encryptSQL(sql) {
const publicKey = `-----BEGIN PUBLIC KEY-----
这里是公钥
-----END PUBLIC KEY-----`;
const encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
const encrypted = encrypt.encrypt(sql);
return encodeURIComponent(encrypted);
}
后端:使用Java进行RSA解密
在后端Java中,使用java.security
和javax.crypto
包来进行RSA解密:
- 导入必要的库:
下面是完整的后端代码,使用Java和RSA非对称加密算法进行解密操作:
```java
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;
import javax.crypto.Cipher;
import java.util.Base64;
/**
* ClassName EncryptionUtil.java
* author 舒一笑
* version 1.0.0
* Description RSA解密工具类
* createTime 2024年07月08日 13:46:00
*/
public class EncryptionUtil {
private static final String ALGORITHM = "RSA";
// 请使用安全的密钥存储方式
private static final String PRIVATE_KEY = "-----BEGIN PRIVATE KEY-----\n"
这里是私钥
+ "-----END PRIVATE KEY-----";
public static String decrypt(String input) throws Exception {
byte[] privateKeyBytes = Base64.getDecoder().decode(PRIVATE_KEY
.replaceAll("-----END PRIVATE KEY-----", "")
.replaceAll("-----BEGIN PRIVATE KEY-----", "")
.replaceAll("\n", ""));
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM);
PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(input));
return new String(decryptedBytes);
}
}
RSA加解密网站推荐
https://www.bejson.com/enc/rsa/