- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个接收应用程序,它需要来自 PHP 生成器的字符串,如下所示:
<?php
$shared_secret = 'secret';
$data = 'whatever';
# Newline added for viewing convenience only
echo bin2hex(mcrypt_encrypt(MCRYPT_BLOWFISH, $shared_secret, $data,
MCRYPT_MODE_ECB)) . "\n";
# -> 05c3febb9970204a
?>
更换接收器的成本很高。
我正在使用 node.js 构建另一个生成器,但我无法让我的 JavaScript 代码生成相同的输出:
var data, encrypt, sharedSecret;
sharedSecret = 'secret';
data = 'whatever';
encrypt = function(d) {
var cipher, crypto;
crypto = require('crypto');
cipher = crypto.createCipher('bf-ecb', sharedSecret, '\0\0\0\0\0\0\0\0');
cipher.update(d);
return cipher.final('hex');
};
console.log(encrypt(data));
// -> 35c9801f2afca332
我选择了'bf-ecb'
密码,因为我认为这是 ECB 模式下的河豚。我提供了 8 个空字节作为 IV,因为 mcrypt_crypt 的 PHP 文档表示,如果省略 IV,它将使用所有空字节,并且 mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB)
答案 8。我选择了 'hex'
因为我认为它提供了与 PHP'2 bin2hex()
相同的表示形式。
我应该如何处理我的 JavaScript 代码才能匹配 PHP 代码的输出?
最佳答案
我的代码只有四个问题:
mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB)
,它报告 8,而不是说“你是个傻瓜”。crypto.createCipheriv()
,它使用给定的 key 。 crypto.createCipher()
使用给定 key 的派生(我认为是 md5)。update()
的返回值不得被丢弃。所以工作解决方案是:
var data, encrypt, sharedSecret;
sharedSecret = 'secret';
data = 'whatever';
encrypt = function(d) {
var cipher, crypto;
crypto = require('crypto');
cipher = crypto.createCipheriv('bf-ecb', sharedSecret, '');
return cipher.update(d, 'utf8', 'hex') + cipher.final('hex');
};
console.log(encrypt(data));
关于php - 将 PHP 的 mcrypt_encrypt() 与 node.js crypto.createCipher() 相匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17990627/
我刚刚移至 Node 12.13,并且 crypto.createDecipher 和 crypto.createCipher 遇到一些问题 首先,当我使用这两个函数时,我收到了弃用警告。 const
我目前正在尝试使用 NodeJS 加密静态数据,我在 Node API 文档中读到 createCipher 不是 recommended . The implementation of crypto
我正在使用以下函数来加密/解密 Node.js 中的字符串: var crypto = require('crypto'); var algorithm = 'aes-256-ctr'; functi
我有一些遗留数据,在 Node 中加密,我需要在 Ruby 中解密。 问题是,数据是使用现已弃用的方法加密的,createCipher .此方法使用密码来执行加密。它已被 createCipheriv
我继承了一个数据库,其中一些字段由旧代码加密。 代码使用了(现已弃用)crypto.createCipher Node.js 提供的函数。该函数期望传递明文密码,而不是 key 和初始化向量。文档表明
我有一个接收应用程序,它需要来自 PHP 生成器的字符串,如下所示: 05c3febb9970204a ?> 更换接收器的成本很高。 我正在使用 node.js 构建另一个生成器,但我无法让我的 J
我是一名优秀的程序员,十分优秀!