【问题标题】:Read Android Crypto keys in php在 php 中读取 Android Crypto 密钥
【发布时间】:2015-06-21 14:03:57
【问题描述】:

您好,我正在编写一个需要加密的 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 创建两个二进制文件,一个是私钥,另一个是公钥。我将这两个文件传输到我的开发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 parameter is not a valid public key

我做错了什么?

邓肯

【问题讨论】:

    标签: php android encryption openssl


    【解决方案1】:

    尝试将-----BEGIN CERTIFICATE----- 更改为-----BEGIN PUBLIC KEY----------BEGIN RSA PUBLIC KEY-----。 END也一样。

    【讨论】:

    • 不客气。请接受此答案作为解决方案。
    猜你喜欢
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    相关资源
    最近更新 更多