Как я могу расшифровать зашифрованную строку aes256 с помощью njs?

sha 256 Код шифрования (из документа)

      function hmacEncrypt(r) {
    let str = r.uri.split("/", 2)
    return require('crypto').createHash('sha256', 'key')
                          .update(str)
                          .digest('base64url');
}

Я хочу использовать njs для декодирования строки в кодировке aes256, base64. Однако в официальном документе njs показан только метод шифрования. Есть ли способ декодировать или кодировать aes256? Я могу вам помочь?

1 ответ

Для aes256 вы можете сделать что-то вроде:

      const crypto = require("crypto");

const initVector = new Uint8Array([
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
]);

function encryptString(string, securityKey) {
    const cipher = crypto.createCipheriv(
        'aes-256-cbc',
        securityKey,
        initVector
    );
    cipher.update(string, 'utf-8', 'hex');
    return cipher.final('hex');
}

function decryptString(string, securityKey) {
    const decipher = crypto.createDecipheriv(
        'aes-256-cbc',
        securityKey,
        initVector
    );
    decipher.update(string, 'hex', 'utf-8');
    return decipher.final('utf-8');
}

В initVector заключается в предоставлении начального состояния алгоритма, вы можете изменить его на все, что захотите, но это должен быть массив ровно из 16 байтов, а затем просто используйте эти функции:

      const securityKey = new Uint8Array([
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
    17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
    31, 32
]);

const text = 'example string';
const encrypted = encryptString(text, securityKey);
const decrypted = decryptString(encrypted, securityKey);

console.log(encrypted);
console.log(decrypted);

В securityKeykey - это пароль, который будет использоваться для шифрования и дешифрования строки, это должен быть массив ровно 32 байта, измените его на все, что захотите!

Другие вопросы по тегам