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。