gpt4 book ai didi

java - session key 的 OpenSSL 加密

转载 作者:太空宇宙 更新时间:2023-11-04 06:52:56 25 4
gpt4 key购买 nike

我正在编写一种加密 session key 的方法。它需要这样做,以便 key 可以由已成功测试的不同程序解密。解密程序无法更改。我陷入困境的是让我的加密以与解密例程一致的方式工作。

我先给出解密例程。请记住,这无法改变:

public Boolean decryptSessionKey() {

// first, base64 decode the session key
String sslString = "openssl base64 -d -in enc_sesskey -out temp";

try {
Process p = Runtime.getRuntime().exec(sslString);
} catch (IOException e2) {
e2.printStackTrace();
}

// now we can decrypt it
try {
sslString = "openssl rsautl -in temp -inkey privkey.pem -decrypt";
Process p = Runtime.getRuntime().exec(sslString);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

try {
String s;
while ((s = stdInput.readLine()) != null) {
decrypted_session_password = s;
writeToFile(decrypted_sesskey, s);
}
return true;

} catch (Exception e) {
return false;
}
} catch (IOException e1) {
return false;
} catch (Exception e) {
return false;
}
}

这是我正在编写的加密例程。我生成了 Base64 编码的文本,但它最终无法解密。值得注意的是,我已经验证解密例程正确地获取了加密例程的结果(两者之间没有握手问题)。

public Boolean encryptSessionKey(Cert receiver_cert) {

String sslString =
"openssl rsautl base64 -in sesskey -out temp -inkey cert.pem -encrypt -certin";

// run this openssl encryption. Note that it will not yet be base64 encoded
try {
Process p = Runtime.getRuntime().exec(sslString);
} catch (IOException e2) {
e2.printStackTrace();
}

// now we base64-encode the encrypted file
sslString = "openssl base64 -in temp -out enc_sesskey";

try {
Process p = Runtime.getRuntime().exec(sslString);
} catch (IOException e1) {return false;
} catch (Exception e) {return false;
}

return true;
}

我真的被困住了。任何帮助表示赞赏。谢谢。

最佳答案

使用 PKCS 填充和从证书获取的公钥进行 RSA 加密:

openssl rsautl -encrypt -in sesskey -inkey cert.pem -certin -out temp
openssl base64 -e -in temp -out enc_sesskey

使用 PKCS 填充和私钥进行 RSA 解密:

openssl base64 -d -in enc_sesskey -out temp
openssl rsautl -decrypt -in temp -inkey privkey.pem -out sesskey2

经过测试,确认没有问题,因为“sesskey”文件的内容与“sesskey2”文件的内容相同。

关于java - session key 的 OpenSSL 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23114808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com