rsa加密算法java简单实现
时间: 2023-07-26 17:40:26 浏览: 114
RSA.rar_rsa_rsa java_rsa加密算法
5星 · 资源好评率100%
好的,以下是一个简单的 Java 实现 RSA 加密算法的示例代码:
```java
import java.math.BigInteger;
import java.security.SecureRandom;
public class RSA {
private final static BigInteger one = new BigInteger("1");
private final static SecureRandom random = new SecureRandom();
private BigInteger privateKey;
private BigInteger publicKey;
private BigInteger modulus;
// 生成公私钥对
public RSA(int bitLength) {
BigInteger p = BigInteger.probablePrime(bitLength / 2, random);
BigInteger q = BigInteger.probablePrime(bitLength / 2, random);
BigInteger phi = (p.subtract(one)).multiply(q.subtract(one));
modulus = p.multiply(q);
publicKey = new BigInteger("65537"); // 一般选择65537作为公钥
privateKey = publicKey.modInverse(phi);
}
// 加密
public byte[] encrypt(byte[] plaintext) {
BigInteger message = new BigInteger(plaintext);
BigInteger ciphertext = message.modPow(publicKey, modulus);
return ciphertext.toByteArray();
}
// 解密
public byte[] decrypt(byte[] ciphertext) {
BigInteger message = new BigInteger(ciphertext);
BigInteger plaintext = message.modPow(privateKey, modulus);
return plaintext.toByteArray();
}
public static void main(String[] args) {
RSA rsa = new RSA(1024);
String message = "Hello, world!";
byte[] plaintext = message.getBytes();
byte[] ciphertext = rsa.encrypt(plaintext);
byte[] decrypted = rsa.decrypt(ciphertext);
System.out.println("Plaintext: " + message);
System.out.println("Ciphertext: " + new String(ciphertext));
System.out.println("Decrypted: " + new String(decrypted));
}
}
```
在该示例代码中,我们定义了一个名为 `RSA` 的类,其中包含了生成公私钥对、加密和解密方法。在主函数中,我们将明文字符串转换为字节数组,然后加密成密文,最后解密回明文,并输出结果。
需要注意的是,该示例代码仅作为 RSA 算法的简单实现,实际应用中还需要考虑更多的安全因素,例如 PKCS#1 v1.5 填充、密钥长度、密钥管理等等。
阅读全文