Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Cryptojs时数组长度无效_Javascript_C#_Cryptojs - Fatal编程技术网

Javascript 使用Cryptojs时数组长度无效

Javascript 使用Cryptojs时数组长度无效,javascript,c#,cryptojs,Javascript,C#,Cryptojs,我正在尝试使用cryptojs将c代码转换为javascript,并在c代码中使用TripleDESCryptoServiceProvider。除了加密部分之外,我可以在javascript代码中完全获得C#的值。我得到一个“无效数组长度”的错误这是整个错误消息: "RangeError: Invalid array length at WordArray.init.clamp (http://localhost:8100/auth-login-login-module.js:1392:

我正在尝试使用cryptojs将c代码转换为javascript,并在c代码中使用TripleDESCryptoServiceProvider。除了加密部分之外,我可以在javascript代码中完全获得C#的值。我得到一个“无效数组长度”的错误这是整个错误消息:

"RangeError: Invalid array length
    at WordArray.init.clamp (http://localhost:8100/auth-login-login-module.js:1392:27)
    at WordArray.init.concat (http://localhost:8100/auth-login-login-module.js:1357:19)
    at Object.pad (http://localhost:8100/auth-login-login-module.js:652:19)
    at Object._doFinalize (http://localhost:8100/auth-login-login-module.js:729:26)
    at Object.finalize (http://localhost:8100/auth-login-login-module.js:400:44)
    at Object.encrypt (http://localhost:8100/auth-login-login-module.js:912:41)
    at Object.encrypt (http://localhost:8100/auth-login-login-module.js:438:59)
    at AuthService.encryptText (http://localhost:8100/auth-login-login-module.js:6745:83)
    at LoginPage.ngOnInit (http://localhost:8100/auth-login-login-module.js:6939:26)
    at checkAndUpdateDirectiveInline (http://localhost:8100/vendor.js:65455:19)"
请参阅我在c#和javascript上的代码

C#

javascript

encryptText = () => {
    debugger;
    const msg = 'xxx:juan:201910181809:12345678';
    let key = crypto.enc.Utf8.parse('xxx');
    key = crypto.MD5(key);
    key.words.push(key.words[0], key.words[1]);
    const iv = crypto.enc.Utf8.parse('xxx');

    // MD5CryptoServiceProvider
    const hashProvider = crypto.MD5(iv);
    const TDESKey = this.wordArrayToByteArray(hashProvider, 8);

    const keybyte = this.wordArrayToByteArray(crypto.SHA512(iv), 16);
    const newKeyx = new Uint8Array(24);

    const newkeybyte = keybyte.slice(10, 34);
    Object.assign(newKeyx, newkeybyte);

    const TDESAlgorithmKey = newkeybyte;

    const DataToEncrypt = this.wordArrayToByteArray(crypto.enc.Utf8.parse(msg), 40);
    const dteLength = DataToEncrypt.length;

    const encrypted = crypto.TripleDES.encrypt(DataToEncrypt, key, {
      keySize: dteLength,
      mode: crypto.mode.ECB,
      padding: crypto.pad.Pkcs7,
      algo: TDESAlgorithmKey
    });
    const result = this.wordArrayToByteArray(encrypted.ciphertext, dteLength);
    console.log(encrypted);
    return encrypted;
}

wordToByteArray(word: any, length: any) {
    const ba = [], xFF = 0xFF;
    if (length > 0) {
      // tslint:disable-next-line:no-bitwise
      ba.push(word >>> 24);
    }
    if (length > 1) {
      // tslint:disable-next-line:no-bitwise
      ba.push((word >>> 16) & xFF);
    }
    if (length > 2) {
      // tslint:disable-next-line:no-bitwise
      ba.push((word >>> 8) & xFF);
    }
    if (length > 3) {
      // tslint:disable-next-line:no-bitwise
      ba.push(word & xFF);
    }
    return ba;
}
你能告诉我怎么做吗。我真的很感激

encryptText = () => {
    debugger;
    const msg = 'xxx:juan:201910181809:12345678';
    let key = crypto.enc.Utf8.parse('xxx');
    key = crypto.MD5(key);
    key.words.push(key.words[0], key.words[1]);
    const iv = crypto.enc.Utf8.parse('xxx');

    // MD5CryptoServiceProvider
    const hashProvider = crypto.MD5(iv);
    const TDESKey = this.wordArrayToByteArray(hashProvider, 8);

    const keybyte = this.wordArrayToByteArray(crypto.SHA512(iv), 16);
    const newKeyx = new Uint8Array(24);

    const newkeybyte = keybyte.slice(10, 34);
    Object.assign(newKeyx, newkeybyte);

    const TDESAlgorithmKey = newkeybyte;

    const DataToEncrypt = this.wordArrayToByteArray(crypto.enc.Utf8.parse(msg), 40);
    const dteLength = DataToEncrypt.length;

    const encrypted = crypto.TripleDES.encrypt(DataToEncrypt, key, {
      keySize: dteLength,
      mode: crypto.mode.ECB,
      padding: crypto.pad.Pkcs7,
      algo: TDESAlgorithmKey
    });
    const result = this.wordArrayToByteArray(encrypted.ciphertext, dteLength);
    console.log(encrypted);
    return encrypted;
}

wordToByteArray(word: any, length: any) {
    const ba = [], xFF = 0xFF;
    if (length > 0) {
      // tslint:disable-next-line:no-bitwise
      ba.push(word >>> 24);
    }
    if (length > 1) {
      // tslint:disable-next-line:no-bitwise
      ba.push((word >>> 16) & xFF);
    }
    if (length > 2) {
      // tslint:disable-next-line:no-bitwise
      ba.push((word >>> 8) & xFF);
    }
    if (length > 3) {
      // tslint:disable-next-line:no-bitwise
      ba.push(word & xFF);
    }
    return ba;
}