Java将PublicKey发送到PHP并加密数据

时间:2014-07-17 22:44:26

标签: java php encryption rsa public-key-encryption

所以我在Java中有一个PublicKey,我需要向服务器发送一个带有密钥的post请求,然后读取密钥服务器端,并发送一些用它加密的数据!

我成功了: 生成密钥对(duh) 在Java程序中使用它加密和解密数据 也许:从它制作一个pem格式的密钥,我不确定

String phpPublic = ("-----BEGIN PUBLIC KEY-----"+Base64.encodeToString(MainActivity.instance.rsa.readPublicKeyFromFile(MainActivity.instance.rsa.PUBLIC_CLIENT_KEY_FILE).getEncoded(),Base64.DEFAULT)+"-----END PUBLIC KEY-----");

我认为这样做,但我不确定!将私钥转换为pem只是为了制作PUBLIC - >标题和页脚中的PRIVATE。

我不知道转换到pem是否真的有必要,如果它不是请建议一个更好的方法

这就是我在PHP中的做法,但我99%肯定这是错误的

$PubKey = openssl_pkey_get_public($publicPem);
$encrypted;
openssl_public_encrypt($toEncode, $encrypted, $PubKey);
echo $encrypted;

抱歉我的英语不好(如果有的话)! Thx在前进! 真诚的,罗伯托

1 个答案:

答案 0 :(得分:1)

你可以发布样本密钥吗?

代替那个我确实认为你在phpseclib a pure php rsa implementation取得了更大的成功。它支持比openssl更多的关键格式,并且它也会自动检测类型。

示例:

<?php
include('Crypt/RSA.php');

$rsa = new Crypt_RSA();
$rsa->loadKey('...');

$rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
echo $rsa->encrypt('whatever');