Библиотека криптографических функций. Упрощает задачи по генерации ключей, вычислению значений хеш-функций и отвечает за аппаратное шифрование. Подключается командой require('crypto')
.
Объект для нахождения хэшей и генерации криптостойких ключей по алгоритмам SHA.
Возвращает в виде ArrayBuffer хэш строки message
, найденный по алгоритму SHA-1
.
var crypto = require('crypto'); var hash = crypto.SHA1('Hello world'); print(hash); /* * Результат вывода * new ArrayBuffer([123, 80, 44, 58, 31, 72, 200, 96, 154, 226, 18, 205, 251, 99, 157, 238, 57, 103, 63, 94]) */
Возвращает в виде ArrayBuffer хэш строки message
, найденный по алгоритму SHA-224
.
Возвращает в виде ArrayBuffer хэш строки message
, найденный по алгоритму SHA-256
.
Возвращает в виде ArrayBuffer хэш строки message
, найденный по алгоритму SHA-384
.
Возвращает в виде ArrayBuffer хэш строки message
, найденный по алгоритму SHA-512
.
Возвращает ключ в виде ArrayBuffer, сгенерированный на основе пароля passphrase
и соли (для дополнительного усиления пароля) salt
. В качестве опций options
передаётся объект со свойствами:
keySize
— размер ключа в 32-х битных (4-х символьных) блоках.iterations
— количество проходов алгоритма при генерации ключа.hasher
— функция хэширования. Принимает значение 'SHA1
,SHA224
,SHA256
,SHA384
или SHA512
.var crypto = require('crypto'); var password = 'MyStrongPassword'; var salt = 'MyStrongSalt'; var secretKey = crypto.PBKDF2(password, salt, { keySize: 4, iterations: 4, hasher: 'SHA256' }); print(secretKey); /* * Результат вывода * new ArrayBuffer([150, 156, 110, 142, 15, 126, 245, 228, 246, 206, 45, 5, 54, 174, 254, 31]) */
Объект для аппаратного AES
шифрования.
var password = 'MyStrongPassword'; var salt = 'MyStrongSalt'; // Подключаем библиотеку var crypto = require('crypto'); // Генерируем ключ для шифрования var secretKey = crypto.PBKDF2(password, salt, { keySize: 4, iterations: 2, hasher: 'SHA256' }); print('Secret key: ', secretKey); // Обратите внимание, что длина шифруемых данных должна быть кратна длине ключа // По этому мы дополнили строку пробелом в конце var secretText = 'My secret text! '; // Шифруем данные var encryptedData = crypto.AES.encrypt(secretText, secretKey); print('Original text: ', secretText); print('Encrypted data: ', encryptedData); // Дешифруем данные var decryptedData = crypto.AES.decrypt(encryptedData, secretKey); print('Decrypted data: ', decryptedData); var decryptedText = ''; for(var c=0; c < decryptedData.length; c++) { decryptedText += String.fromCharCode(decryptedData[c]); } print('Decrypted text: ', decryptedText); /* * Результат вывода в консоль: * Secret key: new ArrayBuffer([158, 14, 146, 192, 65, 202, 100, 235, 182, 198, 169, 96, 177, 191, 247, 188]) * Original text: My secret text! * Encrypted data: new ArrayBuffer([147, 111, 232, 25, 214, 98, 23, 244, 82, 2, 175, 18, 38, 84, 233, 65]) * Decrypted data: new ArrayBuffer([77, 121, 32, 115, 101, 99, 114, 101, 116, 32, 116, 101, 120, 116, 33, 32]) * Decrypted text: My secret text! */
Возвращает зашифрованное сообщение message
. Для шифрования используется ключ key
типа ArrayBuffer
. Длинна ключа 128, 192 или 256 бит. Опции options
— объект с полями:
iv
— вектор инициализации типа Uint8Array
и длинной 16 байт. Для его генерации рекомендуется использовать аппаратный генератор случайных чисел.mode
— режим шифрования, может иметь значения CBC
, CFB
, CTR
, OFB
или ECB
.
Функция возвращает дешифрованное сообщение passphrase
. Для дешифрования используется ключ key
типа ArrayBuffer
. Длина ключа 128, 192 или 256 бит. Опции options
— объект с полями:
iv
— вектор инициализации типа Uint8Array
и длинной 8 байт. Для его генерации рекомендуется использовать аппаратный генератор случайных чисел.mode
— режим шифрования, может иметь значения CBC
, CFB
, CTR
, OFB
или ECB
.Статья о векторе инициализации и режимах шифрования в википедии.