Генерация сбоя ключа PBKDF2 - PullRequest
       87

Генерация сбоя ключа PBKDF2

0 голосов
/ 17 декабря 2018

Я хочу сгенерировать ключ общего доступа с помощью алгоритма PBKDF2 и следую руководству MDN https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/deriveKey

Однако я генерирую «пустой» ключ со следующим кодом.Надеюсь, что кто-то может помочь мне решить проблему.Спасибо!

async function generateSecretKey() {
    const globalSalt = 'e85c53e7f119d41fd7895cdc9d7bb9dd';
    let passPhraseSalt = await hexToBuffer(globalSalt);
    let passPhraseKey = await utf8ToBuffer('password');
    let key = await crypto.subtle.importKey(
                     'raw',
                     passPhraseKey, {
                         name: 'PBKDF2'
                     },
                     false,
                     ['deriveBits', 'deriveKey']
               )
    let key2 = await crypto.subtle.deriveKey({
                            "name": 'PBKDF2',
                            "salt": passPhraseSalt,
                            "iterations": 1000,
                            "hash": 'SHA-256'
                        },
                        key, {
                        "name": 'AES-CBC',
                        "length": 256
                        },
                        true,
                        ["encrypt", "decrypt"]
                )

    let key3 = await crypto.subtle.exportKey("raw", key2);
    let secretKey = await bufferToHex(key3);
    return secretKey;
}

function bufferToHex(arr) {
    var i;
    var len;
    var hex = '';
    var c;

    for (i = 0, len = arr.length; i < len; i += 1) {
        c = arr[i].toString(16);
        if (c.length < 2) {
            c = '0' + c;
        }
        hex += c;
    }
    return hex;
}

Ссылка на скриншот

...