====== crypto ======
Библиотека криптографических функций. Упрощает задачи по генерации ключей, вычислению значений хеш-функций и отвечает за аппаратное шифрование. Подключается командой ''require('crypto')''.
class:: crypto
Объект для нахождения хэшей и генерации криптостойких ключей по алгоритмам SHA.
==== Методы ====
func:: SHA1(message)
Возвращает в виде [[typedarray|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])
*/
func:: SHA224(message)
Возвращает в виде [[typedarray|ArrayBuffer]] хэш строки ''message'', найденный по алгоритму ''SHA-224''.
func:: SHA256(message)
Возвращает в виде [[typedarray|ArrayBuffer]] хэш строки ''message'', найденный по алгоритму ''SHA-256''.
func:: SHA384(message)
Возвращает в виде [[typedarray|ArrayBuffer]] хэш строки ''message'', найденный по алгоритму ''SHA-384''.
func:: SHA512(message)
Возвращает в виде [[typedarray|ArrayBuffer]] хэш строки ''message'', найденный по алгоритму ''SHA-512''.
func:: PBKDF2(passphrase, [salt, options])
Возвращает ключ в виде [[typedarray|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])
*/
==== Свойства ====
class:: AES
Объект для аппаратного ''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!
*/
==== Методы ====
func:: AES.encrypt(message, key, options)
Возвращает зашифрованное сообщение ''message''. Для шифрования используется ключ ''key'' типа ''[[typedarray|ArrayBuffer]]''. Длинна ключа 128, 192 или 256 бит. Опции ''options'' — объект с полями:
* ''iv'' — вектор инициализации типа ''Uint8Array'' и длинной 16 байт. Для его генерации рекомендуется использовать аппаратный генератор случайных чисел.
* ''mode'' — режим шифрования, может иметь значения ''CBC'', ''CFB'', ''CTR'', ''OFB'' или ''ECB''.
func:: AES.decrypt(passphrase, key, options)
Функция возвращает дешифрованное сообщение ''passphrase''. Для дешифрования используется ключ ''key'' типа ''[[typedarray|ArrayBuffer]]''. Длина ключа 128, 192 или 256 бит. Опции ''options'' — объект с полями:
* ''iv'' — вектор инициализации типа ''Uint8Array'' и длинной 8 байт. Для его генерации рекомендуется использовать аппаратный генератор случайных чисел.
* ''mode'' — режим шифрования, может иметь значения ''CBC'', ''CFB'', ''CTR'', ''OFB'' или ''ECB''.
Статья [[https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B6%D0%B8%D0%BC_%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F|о векторе инициализации и режимах шифрования]] в википедии.