您好我正在编写需要加密的Android应用。在Android上,我使用以下代码生成RSA密钥对;
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
SecureRandom r=SecureRandom.getInstance("SHA1PRNG");
kpg.initialize(2048,r);
KeyPair kp = kpg.generateKeyPair();
Utils.File.write(szPri,kp.getPrivate().getEncoded());
Utils.File.write(szPub,kp.getPublic().getEncoded());
My Utils.File创建两个二进制文件,一个是私钥,另一个是public。我将这两个文件传输到我的开发PC进行测试,并且基本上想要使用PHP加密一个小的消息,以免损坏下面的PHP代码;
<?php
$dev="Emulator_96d68aa8156345d0";
$sz="Duncan var Her";
echo "Test Client generated key's\n";
echo $dev."\n";
$cpublic_der = file_get_contents($dev."/public");
$cprivate_der = file_get_contents($dev."/private");
$cpublic_pem = der2pem($cpublic_der);
echo $cpublic_pem."\n";
if(openssl_public_encrypt($sz,$encsz,$cpublic_pem) == true) {
echo $sz."\n";
echo "ok\N";
}
function der2pem($der_data) {
$pem = chunk_split(base64_encode($der_data), 64, "\n");
$pem = "-----BEGIN CERTIFICATE-----\n".$pem."-----END CERTIFICATE-----\n";
return $pem;
}
?>
php PHP消息警告:openssl_public_encrypt():key参数不是有效的公钥
我做错了什么?
邓肯
答案 0 :(得分:0)
尝试将-----BEGIN CERTIFICATE-----
更改为-----BEGIN PUBLIC KEY-----
或-----BEGIN RSA PUBLIC KEY-----
。与END相同。