====== 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|о векторе инициализации и режимах шифрования]] в википедии.