我用Java中的RSA算法对字符串进行不可靠的加密和解密有一个非常烦人的问题.它接缝只能在35%的时间内工作,我无法弄清楚为什么它有时会起作用,有时却不起作用.这是我写的一些测试代码,试图验证加密/解密中的随机性.它运行100圈,每次加密和解密相同的字符串并打印成功的次数:
public static void main(String[] args) throws Exception {
byte[] dataToEncrypt = "Hello World!".getBytes("UTF-16LE");
byte[] cipherData = null;
byte[] decryptedData;
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(512);
KeyPair kp = kpg.genKeyPair();
Key publicKey = kp.getPublic();
Key privateKey = kp.getPrivate();
KeyFactory fact = KeyFactory.getInstance("RSA");
RSAPublicKeySpec pub = (RSAPublicKeySpec) fact.getKeySpec(publicKey,
RSAPublicKeySpec.class);
RSAPublicKeySpec spec = new RSAPublicKeySpec(pub.getModulus(), pub
.getPublicExponent());
KeyFactory factory = KeyFactory.getInstance("RSA");
PublicKey publicKeyRSA = factory.generatePublic(spec);
Cipher cipher = Cipher.getInstance("RSA");
int k = 0;
for (int i = 0; i < 100; i++) { …Run Code Online (Sandbox Code Playgroud)