PHP和Javascript之间是否有共同的encryption方法?

我想用PHPencryption我的用户ID,将它们发送到JavaScript。 并在JavaScript解密他们。
有不同的语言之间的encryption和解密有任何常见的方法吗?

我正在使用节点js。 nodejs有服务器端的JavaScript。 实际上它是服务器端解密。 但它是JavaScript。

在使用PHP和Coldfusion之前,我已经完成了跨语言encryption。 有一些技巧,因为它们的实现略有差异,但它应该更容易在Javascript,因为JavaScript没有本地encryptionfunction。 你将不得不提供你自己的,所以你可以提供你所需要的。

要在PHP中进行encryption,您需要安装mcrypt库。 我selectBlowfish作为我的algorithm,并使用ECB模式,因为它更容易处理 – 您不必担心初始化向量,但理论上不太安全。 但是,由于您只是encryption一个短的用户ID,这应该是足够的。

以下是使用mcryptencryptionstring的一个示例:

 $data = $user_id; $data = base64_encode($data); // Add PKCS5 padding to data string for compatibility // This may not be necessary, depending on your Javascript implementation $pad = 8 - (strlen($data) % 8); $data = $data . str_repeat(chr($pad), $pad); $algorithm = MCRYPT_BLOWFISH; $mode = MCRYPT_MODE_ECB; $key = "SECRET"; $ciphertext = mcrypt_encrypt($algorithm, $key, $data, $mode, null); $base64 = base64_encode($ciphertext); 

请注意, $ciphertext将是二进制的,所以你将需要在64位编码,以便于在各种语言之间进行转换。

将encryption的string传输到Node JS应用程序并将其转换为base64的二进制文件后 ,您应该可以使用JavaScript的blowfish实现将其解密。 这是一个易于使用的例子: http : //dren.ch/js_blowfish/

您可以放心地忽略该页面上的警告,因为它指的是大型string的客户端解密(这很愚蠢)。 如果你是在服务器上做的话,你可以保密的保密。

请注意,在上面的例子中,string在进行encryption之前是以base64编码的,所以在解密之后,您将不得不base64解码。

同时要小心Blowfish ECB的最小和最大密钥大小,以节省一些头痛。 您可以使用PHP mcrypt_enc_get_supported_key_sizes函数进行检查。

互联网。 TCP。 HTTP

是的,常用的方法是SSL。 如果您希望通过HTTP在服务器和客户端之间实现安全性,则SSL是您正在寻找的解决scheme。

是的,你可以推出你自己的解决scheme。 不,这不会有什么好处 正确实施encryption非常困难,如果你不得不在Stack Overflow上提出一个问题,那么你就没有机会做正确的事情。 使用SSL,或者什么也不用,因为你提出的其他选项不会比纯文本更好。