Javascript Browserify`crypto.createDecipher`“;未捕获范围错误:数组长度无效;

Javascript Browserify`crypto.createDecipher`“;未捕获范围错误:数组长度无效;,javascript,cryptography,browserify,Javascript,Cryptography,Browserify,我有一个在Node中工作的加密代码示例,但当我在browserify中尝试它时,我得到一个“UncaughtRangeError:无效数组长度” 来自节点的输出: $ node crypto.js Encrypted: ClvTr5IWbgLHmgGQi81T6xtCR1RX4j5prSvFmtFr9+EXr5qKePKWcnu4tdFckh50 Decrypted: The quick brown fox jumps over the lazy dog. It worked! Brows

我有一个在Node中工作的加密代码示例,但当我在browserify中尝试它时,我得到一个“UncaughtRangeError:无效数组长度”

来自节点的输出:

$ node crypto.js
Encrypted:  ClvTr5IWbgLHmgGQi81T6xtCR1RX4j5prSvFmtFr9+EXr5qKePKWcnu4tdFckh50
Decrypted:  The quick brown fox jumps over the lazy dog.
It worked!
Browserify的输出:

Encrypted:  ClvTr5IWbgLHmgGQi81T6xtCR1RX4j5prSvFmtFr9+E=F6+ainjylnJ7uLXRXJIedA==
Oops! RangeError: Invalid array length
一些有趣的观察结果:

  • Fr9+E
    (大约43个字符)之后,加密输出就不同了,这让我认为问题在于加密而不是解密
  • 如果我为
    数据
    选择一个较小的字符串,例如“testing”,它就会起作用
  • 整个代码都打开了。如果您能为我指出解决问题的正确方向,我将不胜感激

    更新 如果我在调用
    decrypt
    (即,解密节点的加密数据)之前添加以下代码行,它会工作。证明我的观点,错误在于加密机

    
    encryptedData=“clvtr5iwbglhlhmggqi81t6xtcr1rx4j5prsvfmtfr9+EXr5qKePKWcnu4tdFckh50”;
    

    更新2
    将算法设置为aes-256-ctr将使我在Browserify中通过测试,但我仍然担心Browserify crypto的aes256产生的结果与节点的不同。

    修复


    原来这是Browserify的base64数据编码的问题。它被Browserify的优秀员工合并为master(请参阅)。

    修复

    原来这是Browserify的base64数据编码的问题。它被Browserify的优秀人士合并为master(见)

    Encrypted:  ClvTr5IWbgLHmgGQi81T6xtCR1RX4j5prSvFmtFr9+E=F6+ainjylnJ7uLXRXJIedA==
    Oops! RangeError: Invalid array length