写在最前面,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/