Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.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
PHP和Javascript之间有共同的加密方法吗?_Javascript_Php_Node.js_Encryption - Fatal编程技术网

PHP和Javascript之间有共同的加密方法吗?

PHP和Javascript之间有共同的加密方法吗?,javascript,php,node.js,encryption,Javascript,Php,Node.js,Encryption,我想用php加密我的用户ID,将它们发送到javascript。并用javascript对其进行解密。 不同语言之间是否有加密和解密的通用方法 我正在使用NodeJS。nodejs具有服务器端javascript。实际上是服务器端解密。但它是javascript 互联网。tcp。http 是的,常用的方法是SSL。如果您希望通过HTTP在服务器和客户端之间实现安全性,那么SSL就是您要寻找的解决方案 是的,您可以推出自己的解决方案。不,不会有什么好处的。正确地实现加密是非常困难的,非常困难,如果

我想用php加密我的用户ID,将它们发送到javascript。并用javascript对其进行解密。
不同语言之间是否有加密和解密的通用方法

我正在使用NodeJS。nodejs具有服务器端javascript。实际上是服务器端解密。但它是javascript

互联网。tcp。http

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

是的,您可以推出自己的解决方案。不,不会有什么好处的。正确地实现加密是非常困难的,非常困难,如果你不得不在堆栈溢出时问一个关于它的问题,你就没有机会做正确的事情。使用SSL,或者什么都不使用,因为您提出的任何其他选项都不会比纯文本更好

互联网。tcp。http

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


是的,您可以推出自己的解决方案。不,不会有什么好处的。正确地实现加密是非常困难的,非常困难,如果你不得不在堆栈溢出时问一个关于它的问题,你就没有机会做正确的事情。使用SSL,或者不使用任何东西,因为您提出的任何其他选项都不会比纯文本更好。

在使用PHP和Coldfusion之前,我已经完成了跨语言加密。虽然有一些技巧,因为它们的实现略有不同,但在Javascript中应该更容易,因为Javascript没有本机加密功能。你必须提供你自己的,这样你才能提供你所需要的

要在PHP中加密,需要安装
mcrypt
库。我选择Blowfish作为我的算法,并使用ECB模式,因为它更容易使用——你不需要担心初始化向量,但理论上它不太安全。但是,考虑到您只加密了一个短的用户ID,这就足够了

以下是使用mcrypt加密字符串的示例:

$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
将采用二进制格式,因此您需要使用base 64对其进行编码,以便于在不同语言之间传输

一旦您将加密字符串传输到您的Node JS应用程序,然后您应该能够使用针对Javascript的blowfish实现对其进行解密。以下是一个易于使用的示例:

您可以安全地忽略该页面上的警告,因为它涉及对大字符串的客户端解密(这很愚蠢)。如果您在服务器上执行此操作,则可以安全地为您的密钥保密

请注意,在上面的示例中,字符串在加密之前是base64编码的,因此您必须在解密后再次对其进行base64解码


也要注意河豚ECB的最小和最大键大小,以避免一些头痛。您可以使用PHP函数进行检查。

在使用PHP和Coldfusion之前,我已经完成了跨语言加密。虽然有一些技巧,因为它们的实现略有不同,但在Javascript中应该更容易,因为Javascript没有本机加密功能。你必须提供你自己的,这样你才能提供你所需要的

要在PHP中加密,需要安装
mcrypt
库。我选择Blowfish作为我的算法,并使用ECB模式,因为它更容易使用——你不需要担心初始化向量,但理论上它不太安全。但是,考虑到您只加密了一个短的用户ID,这就足够了

以下是使用mcrypt加密字符串的示例:

$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
将采用二进制格式,因此您需要使用base 64对其进行编码,以便于在不同语言之间传输

一旦您将加密字符串传输到您的Node JS应用程序,然后您应该能够使用针对Javascript的blowfish实现对其进行解密。以下是一个易于使用的示例:

您可以安全地忽略该页面上的警告,因为它涉及对大字符串的客户端解密(这很愚蠢)。如果您在服务器上执行此操作,则可以安全地为您的密钥保密

请注意,在上面的示例中,字符串在加密之前是base64编码的,因此您必须在解密后再次对其进行base64解码


也要注意河豚ECB的最小和最大键大小,以避免一些头痛。您可以使用PHP函数来检查这一点。

如果您正在解密客户端,那么解密序列是否对任何想要它的人都可用?@tymeJV我正在使用node js。nodejs具有服务器端javascript。实际上是服务器端解密。但它是javascript。你应该说你正在使用node.js。Google node js加密模块如果都是服务器端的,为什么还要担心你控制的两个进程之间的加密呢?我不知道你是否注意到了,但你在这些评论中披露的信息应该在原始问题中。请更新您的问题,使其包含所有详细信息。如果您正在解密客户端,解密序列是否可供任何人使用?@tymeJV我使用的是node js。nodejs具有服务器端javascript。实际上是服务器端解密。但它是javascript。你应该说你正在使用node.js。Google node js加密模块如果都是服务器端的,为什么还要担心你控制的两个进程之间的加密呢?我不知道你是否注意到了,但你在这些评论中披露的信息应该在原始问题中。请更新您的问题以包含所有详细信息。-1,不要滚动您自己的,为什么不推荐HTTPS?这使得代码更加复杂,同时有现成的标准来解决这个问题。@Philipp我不知道OP要求的细节,但我相信他