我是android新手,正在开发一个基于客户机-服务器的应用程序。这里我需要使用rsa算法进行加密/解密。
场景是:1.服务器必须创建一个私有/公共密钥对(php)并将公钥发送给客户端(android应用程序)2.客户端应该使用该公钥加密数据并发送给服务器3.现在服务器必须使用私钥解密。
在php中,我使用“phpseclib”创建密钥对。
这是编码:
服务器.php:
<?PHP
include 'Crypt/RSA.php';
$rsa = new Crypt_RSA();
extract($rsa->createKey(1024));
echo $publickey;
?>
生成的公钥:
migfma0gcsqgsib3dqebaquaa4gnacbiqkbgqdlz4yao1ftolc6nijbctv5ivnw f6mxcem5+rxy+29axcpmwhlm9oesifw6ozrrendyqwy+kvzcj2bwyneayjxs wopvqt2xscplwzonqgm+dnayjxeeofgu5di63fwdigv4m2ph1vmme6684sbzu1 hhjhuhsx2eibbr0/lqidaqab
现在在java中,我成功地接收到了这个公钥并将其存储在一个字符串中。
编码:
protected String doInBackground(Void... params)
{
try
{
URL url=new URL("http://10.0.2.2/Samples/Server.php");
URLConnection con=url.openConnection();
con.setDoOutput(true);
BufferedReader ip=new BufferedReader(new InputStreamReader(con.getInputStream()));
String tmp,res="";
while((tmp=ip.readLine())!=null)
{
res+=tmp;
}
return res; //res contains the public key
}
catch(Exception e)
{
return new String("Exception : "+e.getMessage());
}
}
我在java中使用bouncy castle provider(bcprov-jdk15on-151)。
现在我不知道如何将这个字符串转换成rsa公钥。
请推荐一些代码片段?如果代码需要改进和修正,请修正它。
谢谢。。。
1条答案
按热度按时间6yt4nkrj1#
假设您正确下载了密钥,您可以在中使用密钥
base 64 encoding
生成一个java.security.PublicKey
代码如下:希望这有帮助,