在php中阅读Android加密密钥

时间:2015-04-15 14:34:44

标签: php android encryption openssl

您好我正在编写需要加密的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参数不是有效的公钥

我做错了什么?

邓肯

1 个答案:

答案 0 :(得分:0)

尝试将-----BEGIN CERTIFICATE-----更改为-----BEGIN PUBLIC KEY----------BEGIN RSA PUBLIC KEY-----。与END相同。