假設我有以下的Java代碼來生成公私密鑰對:RSA加密,解密PHP
KeyPairGenerator generator = KeyPairGenerator.getInstance ("RSA");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
generator.initialize (1024, random);
KeyPair pair = generator.generateKeyPair();
RSAPrivateKey priv = (RSAPrivateKey)pair.getPrivate();
RSAPublicKey pub = (RSAPublicKey)pair.getPublic();
// Sign a message
Signature dsa = Signature.getInstance("SHA1withRSA");
dsa.initSign (priv);
dsa.update ("Hello, World".getBytes(), 0, "Hello, World".length());
byte[] out = dsa.sign();
/* save the signature in a file */
FileOutputStream sigfos = new FileOutputStream("sig");
sigfos.write(out);
sigfos.close();
一個人怎麼會去和PHP解密文件「SIG」?我讀過帖子:https://stackoverflow.com/a/1662887/414414,它提供了一個函數來將DER
文件轉換爲PEM
(假設我也從Java保存公鑰)。
我已經試過類似:
$key = openssl_pkey_get_public ("file://pub_key.pem");
$data = null;
openssl_public_decrypt (file_get_contents ("sig"), $data, $key);
echo $data, "\n";
它成功地解密消息,但它是許多奇怪的字符。
我們的場景是一個Java客戶端發送消息到PHP服務器,但用私鑰加密數據。 PHP知道它應該用來解密和驗證消息的公鑰。
我已經閱讀了很多關於這個問題的帖子,所以我已經意識到這是一個有點特定的問題,尤其是如果有不同的算法在使用等等。所以對不起,如果這可能是一個副本。
任何反饋都非常感謝!
「它成功解密了郵件,但它是很多奇怪的字符。」 - 你能更具體一點嗎?難道它只是一個編碼問題? – 2013-03-14 14:18:56
解碼後的消息是否與原始文本類似,還是完全亂碼? – 2013-03-14 14:19:27
你想驗證Java和PHP之間發送的消息,還是加密它們?或兩者? – 2013-03-14 16:34:41