Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java向PHP发送公钥并加密数据_Java_Php_Encryption_Rsa_Public Key Encryption - Fatal编程技术网

Java向PHP发送公钥并加密数据

Java向PHP发送公钥并加密数据,java,php,encryption,rsa,public-key-encryption,Java,Php,Encryption,Rsa,Public Key Encryption,所以我有一个Java公钥,我需要向服务器发送一个post请求,其中包含密钥,然后读取密钥服务器端,并发送一些用它加密的数据 我成功地做到了: 生成密钥对(duh) 在Java程序中使用它加密和解密数据 也许:用它做一个pem格式的密钥,我不确定 String phpPublic = ("-----BEGIN PUBLIC KEY-----"+Base64.encodeToString(MainActivity.instance.rsa.readPublicKeyFromFile(MainActi

所以我有一个Java公钥,我需要向服务器发送一个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前进!
说真的,罗伯托,你能发布一个示例密钥吗

我认为你在这方面会更成功。它支持的密钥格式比openssl多得多,而且它还可以自动检测密钥类型

例如:

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

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

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

有什么问题?你试过运行那个代码吗?您是否得到错误的结果或错误?它表示对象不是键