Расшифровка строки с использованием алгоритма 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 ответ
Основная информация:
В общем, лучше всего использовать режим CBC, режим ECB, как правило, не рекомендуется / безопасный режим. ECB против режима CBC.
AES имеет один размер блока 128 бит, Rijndael должен иметь размер блока, определенный как 128 бит, чтобы быть AES.
AES может иметь размеры ключа] 128, 192 или 256 бит.
PKCS # 7 и PKCS#5 являются эквивалентными и должны использоваться. mcrypt не поддерживает заполнение PKCS, поэтому вам придется сделать это самостоятельно в игнорирующем код для использования mcrypt.
В целом вам будет лучше использовать упакованное решение, такое как RNCryptor, которое поддерживает несколько языков / платформ, которые обрабатывают все детали, необходимые для обеспечения безопасного шифрования.