[英]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.