我可以用Java进行RSA加密但是用PHP解密吗?

时间:2010-05-06 08:15:58

标签: java php encryption rsa

我可以在J2ME或J2SE中进行RSA加密,并在PHP中解密吗?

我认为RSA是一种规范,与语言无关。

4 个答案:

答案 0 :(得分:4)

RSA是一种算法;为了互操作,您需要的另一件事是消息格式的规范。 RFC 3447定义了一种可能的消息格式,还有其他格式,例如RFC 3110 DNS密钥格式。选择一种消息格式,应该没有任何问题。

答案 1 :(得分:3)

一句话,是的。

你可能遇到的唯一问题是字符编码或行结尾,但你可能会没事。

答案 2 :(得分:1)

如果要加密大于密钥的任何内容,您可能需要考虑使用对称密码加密数据,然后使用RSA加密对称密钥。执行此操作的标准机制(在S / MIME等中使用)是CMS(IETF对PKCS#7的更新)。我不确定在PHP中对CMS / PKCS#7有什么支持,但在java方面你可以使用优秀的bouncy castle crypto library。您将没有互操作性问题,因为所有数据结构都在ASN.1中定义。如果听起来有点复杂,请不要担心,因为这些细节是由加密库抽象出来的。

答案 3 :(得分:0)

是。我这样做。在Java中,任何JCE都应该这样做。在PHP中,请使用OpenSSL扩展。

正如其他人提到的,你最多只能加密key_length --11个字节。例如,对于1024位密钥,您只能加密117个字节。如果您的数据可能超过该数据,请使用OpenSSL扩展支持的PKCS#7。