Расшифровка строки с использованием алгоритма AES в node.js для линейного API

У меня есть следующая информация о расшифровке строки. Это для линейного API. https://developers.line.me/in_app_web/api-reference

Зашифрованная строка будет декодирована с использованием Секрета канала в качестве симметричного ключа. Используемый алгоритм - AES, размер блока - 128 бит, режим шифрования - ECB, а заполнение - PKCS#5. Строка Секрет канала будет интерпретироваться как шестнадцатеричная строка байтов и использоваться в качестве симметричного ключа. Зашифрованная строка следует за кодировкой Base64 и будет восстановлена ​​после ее декодирования.

Он также предоставляет примеры в java, ruby ​​и php. Я пытаюсь реализовать это на node.js, но я полностью запутался со всеми терминами и как реализовать это на node.js.

Реализация Ruby

source = ... # encrypted string
cipher = OpenSSL::Cipher::Cipher.new('AES-128-ECB')
cipher.decrypt
cipher.key = ['YOUR_CHANNEL_SECRET'].pack('H*')
decoded = Base64.decode64(source)
decrypted = cipher.update(decoded) + cipher.final

реализация PHP

$source = ...; // encrypted string
$secretKey = pack('H*', "YOUR_CHANNEL_SECRET");
$decoded = base64_decode($source);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $secretKey, $decoded, MCRYPT_MODE_ECB);

Итак, у нас есть источник, и YOUR_CHANNEL_SECRET доступен. Любая помощь о том, как реализовать это на node.js, будет полезна.

благодарю вас

1 ответ

Основная информация:

  1. В общем, лучше всего использовать режим CBC, режим ECB, как правило, не рекомендуется / безопасный режим. ECB против режима CBC.

  2. AES имеет один размер блока 128 бит, Rijndael должен иметь размер блока, определенный как 128 бит, чтобы быть AES.

  3. AES может иметь размеры ключа] 128, 192 или 256 бит.

  4. PKCS # 7 и PKCS#5 являются эквивалентными и должны использоваться. mcrypt не поддерживает заполнение PKCS, поэтому вам придется сделать это самостоятельно в игнорирующем код для использования mcrypt.

В целом вам будет лучше использовать упакованное решение, такое как RNCryptor, которое поддерживает несколько языков / платформ, которые обрабатывают все детали, необходимые для обеспечения безопасного шифрования.

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