gpt4 book ai didi

javascript - PHP 和 Javascript 之间有通用的加密方法吗?

转载 作者:太空宇宙 更新时间:2023-11-04 02:58:54 25 4
gpt4 key购买 nike

我想用 php 加密我的用户 ID,然后将它们发送到 javascript。并在 JavaScript 中解密它们。
不同语言之间有没有通用的加密和解密方法?

我正在使用 Node js。 Nodejs 有服务器端 JavaScript。实际上它是服务器端解密。但它是 JavaScript。

最佳答案

在使用PHP和Coldfusion之前我已经做过跨语言加密。由于它们的实现略有不同,因此存在一些技巧,但在 Javascript 中应该更容易,因为 Javascript 没有 native 加密功能。您必须提供自己的内容,这样您才能准确提供您所需要的内容。

要在 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 应用程序后,convert it back into binary from base64 ,然后您应该能够使用 JavaScript 的河豚实现来解密它。这是一个易于使用的示例:http://dren.ch/js_blowfish/

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

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

还要注意 Blowfish ECB 的最小和最大 key 大小,以避免一些麻烦。您可以使用 PHP mcrypt_enc_get_supported_key_sizes 检查这一点功能。

关于javascript - PHP 和 Javascript 之间有通用的加密方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19710792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com