简体   繁体   English

CryptoJS将单词数组一分为二

[英]CryptoJS splitting word array in two

I'm not too handy with byte conversions, so I want to make sure I'm not doing anything dangerous. 我对字节转换不太方便,因此我想确保我没有做任何危险的事情。

I'm simply generating a 512 bit key using CryptoJS pbkdf2. 我只是使用CryptoJS pbkdf2生成512位密钥。

I then want to split this key in half to generate two 256 bit keys. 然后,我想将此密钥分成两半,以生成两个256位密钥。

generateKeyPair = function(input, salt) {
     var output = CryptoJS.PBKDF2(input, salt, { keySize: 512/32 });

     var firstHalf = _.clone(output);
     var secondHalf = _.clone(output);
     var sigBytes = output.sigBytes/2;

     firstHalf.words = output.words.slice(0, 10);
     secondHalf.words = output.words.slice(10, 20);
     firstHalf.sigBytes = sigBytes;
     secondHalf.sigBytes = sigBytes;

     return [firstHalf.toString(), secondHalf.toString()];
   }

The output I get for generateKeyPair("hello", "world") is: 我为generateKeyPair("hello", "world")获得的输出是:

["798ef2617367d80daeacf8b457af7903eebf6d1f384c9fed762b14186036e912", "0a9782aa773bdafcd9cd259e95381ac9ab26d026fe6a3375a93dc6b2a69e7ac3"] [“ 798ef2617367d80daeacf8b457af7903eebf6d1f384c9fed762b14186036e912”,“ 0a9782aa773bdafcd9cd259e95381ac9ab26d026fe6a3375a93dc6b2a69e7ac3”

The underscore here is using lodash. 下划线是使用lodash。 Does this look right? 这看起来正确吗?

Your solution seems fine. 您的解决方案似乎很好。 I recently solved this problem just by splitting the hex string in half. 我最近仅通过将十六进制字符串分成两半就解决了这个问题。 My example takes a key in WordArray format and returns each half in WordArray format. 我的示例采用WordArray格式的键,并以WordArray格式返回每一半。

function splitKey(key) {
    const keyString = key.toString()
    const firstHalf = keyString.slice(0,keyString.length/2)
    const secondHalf = keyString.slice(keyString.length/2,keyString.length)

    return [CryptoJS.enc.Hex.parse(firstHalf), CryptoJS.enc.Hex.parse(secondHalf)]
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM