OpenSSL PHP到JavaScript(节点)

我正在转换encryption脚本从PHP到JavaScript,正在挣扎…

node.js密码文档如下:

crypto.createCipheriv(algorithm, key, iv)
使用给定的algorithm,密钥和iv创build并返回一个密码对象。

PHP openssl-encrypt文档 :

string openssl_encrypt ( string $data , string $method , string $password [, bool $raw_output = false [, string $iv = "" ]] )

PHP使用密码和和iv 。 当没有使用 IV时节点只使用密码 ,否则你必须提供密钥iv

当我同时使用密码iv时,如何将我的PHP函数转换为节点。

我也不清楚究竟是什么关键代表…节点文档指出, 密钥是计算,如果只有一个密码提供..这是什么PHP? 如果是这样,当我提供一个密码和一个iv时,它会做什么? 它使用密码作为密钥吗?

从PHP文档中的用户注释看来,PHP中的$password参数实际上是encryption密钥,而不是实际的密码。 这看起来与OpenSSL文档是一致的,这些文档声明了你使用一个密钥和初始化向量, 或者使用了一个密码,从这个密码algorithm中得到密钥和IV,但是你永远不会提供密码和IV。

例:

 <?php echo openssl_encrypt('foobar', 'aes-256-cbc', 'password', false, 'abcdefghijklmnop'); // prints CUigVN+6jU24E2FdfmmmTw== #!/bin/bash echo -n foobar | openssl enc -aes-256-cbc -e -K 70617373776F7264 -iv 6162636465666768696A6B6C6D6E6F70 -nosalt -a // prints CUigVN+6jU24E2FdfmmmTw== 

这个问题可能是你需要提供hexopenssl的key和IV。