我正在尝试在Java和PHP中实现RSA加密,但我似乎无法让PHP识别我的Java公钥/私钥.以下是编码/解码公钥和私钥的java代码:
public static byte[] EncodePublicKey(PublicKey _publickey) throws Exception
{
return _publickey.getEncoded();
}
public static PublicKey DecodePublicKey(byte[] _encodedkey) throws Exception
{
KeyFactory fac = KeyFactory.getInstance("RSA");
X509EncodedKeySpec encodedKey = new X509EncodedKeySpec(_encodedkey);
return fac.generatePublic(encodedKey);
}
public static byte[] EncodePrivateKey(PrivateKey _privatekey) throws Exception
{
return _privatekey.getEncoded();
}
public static PrivateKey DecodePrivateKey(byte[] _encodedkey) throws Exception
{
KeyFactory fac = KeyFactory.getInstance("RSA");
PKCS8EncodedKeySpec encodedKey = new PKCS8EncodedKeySpec(_encodedkey);
return fac.generatePrivate(encodedKey);
}
Run Code Online (Sandbox Code Playgroud)
我首先尝试使用PEAR Crypt_RSA函数,但它不支持X.509或PKCS8(它只是简单的base64编码序列化模数,指数和键类型).然后我尝试了OpenSSL"openssl_get_publickey"函数,但它似乎也没有识别格式.
任何帮助将非常感谢oO
我目前正在开发一个在客户端和服务器之间传输数据的系统,并且想知道我计划使用的加密强度是多少.
我的想法是拥有一个私有/公共RSA密钥对,并将公钥分发给每个客户端(仅将私钥留在服务器上).然后,每个客户端将生成自己的AES密钥,RSA会对其进行加密.然后,他们将AES加密其数据并将加密的数据和加密的AES密钥发送到服务器.然后,服务器将使用私钥解密AES密钥,然后使用AES密钥解密数据.
是否有任何我缺少的安全漏洞和/或有更好的方法吗?