crypto
Библиотека криптографических функций. Упрощает задачи по генерации ключей, вычислению значений хеш-функций и отвечает за аппаратное шифрование. Подключается командой 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.
Статья о векторе инициализации и режимах шифрования в википедии.