pidCrypt это open source библиотека криптографических алгоритмов. Поддерживает RSA и AES шифрование/дешифрование, и расчёт MD5 и SHA хэшей.
Шифрование (демо)
Декодирование
У меня примеры почему то не работали с той версией библиотеки которая по ссылке «Current version» и я скачал все скрипты непосредственно с тех мест откуда они подключались в примерах
Информацию про шифрование на JavaScript я искал довольно давно когда думал про создание чата с оконечным шифрованием или веб-сервиса заметок с шифрованием текста заметок на стороне клиента. Собственно плагин чата для личной переписки пользователей я сделал и теперь думаю нужна ли в нём функция шифрования сообщений.
Base64
Base64
Пример использования pidCrypt для работы с Base64 (демо)Кодирование Base64 может быть полезно, если в окружении HTTP используется информация, длину которой можно точно определить. Также многим приложениям необходимо кодировать двоичные данные для удобства включения в URL, скрытые поля форм, и здесь Base64 удобно не только для компактного представления, но и относительной нечитаемостью для попытки выяснения случайным человеком-наблюдателем природы данных.
var myString = "This is some text";
//encoding:
var b64encoded = pidCryptUtil.encodeBase64(myString);
//decoding:
var b64decoded = pidCryptUtil.decodeBase64(b64encoded);
AES
Advanced Encryption Standard (AES)
Пример симметричного шифрования AES (демо)Advanced Encryption Standard (AES) — симметричный алгоритм блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит), принятый в качестве стандарта шифрования правительством США по результатам конкурса AES. Этот алгоритм хорошо проанализирован и сейчас широко используется, как это было с его предшественником DES. Национальный институт стандартов и технологий США (англ. National Institute of Standards and Technology, NIST) опубликовал спецификацию AES 26 ноября 2001 года после пятилетнего периода, в ходе которого были созданы и оценены 15 кандидатур. 26 мая 2002 года AES был объявлен стандартом шифрования. По состоянию на 2009 год AES является одним из самых распространённых алгоритмов симметричного шифрования.
var aes = new pidCrypt.AES.CBC();
// Шифрует текст
var crypted = aes.encryptText("Шифруем текст", "password", {nBits: 256});
// Расшифрует текст
var decrypted = aes.decryptText(pidCryptUtil.stripLineFeeds(crypted),"password",{nBits:256});
RSA
RSA — криптографический алгоритм с открытым ключом
К сожалению в библиотеке отсутствует функция создания открытого и закрытого ключей. Поэтому они должны генерироваться какими то другими средствами.RSA — криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел. Криптосистема RSA стала первой системой, пригодной и для шифрования, и для цифровой подписи.
Шифрование (демо)
//new instance
var rsa = new pidCrypt.RSA();
//get the modulus and exponent from certificate (ASN1 parsing)
//pem(Array of Bytes)
var asn = pidCrypt.ASN1.decode(pem);
var tree = asn.toHexTree();
//setting the public key for encryption with retrieved ASN.1 tree
rsa.setPublicKeyFromASN(tree);
//encrypt the plaintext and returns the encrypted text
var crypted = rsa.encrypt();
Декодирование
//new instance
var rsa = new pidCrypt.RSA();
//get the parameters from certificate (ASN1 parsing)
//pem(Array of Bytes)
var asn = pidCrypt.ASN1.decode(pem);
var tree = asn.toHexTree();
//setting the private key for decryption with retrieved ASN.1 tree
rsa.setPrivateKeyFromASN(tree);
//decrypt the crypted text and returns the plaintext
var plain = rsa.decrypt();
У меня примеры почему то не работали с той версией библиотеки которая по ссылке «Current version» и я скачал все скрипты непосредственно с тех мест откуда они подключались в примерах
Примечание
Информацию про шифрование на JavaScript я искал довольно давно когда думал про создание чата с оконечным шифрованием или веб-сервиса заметок с шифрованием текста заметок на стороне клиента. Собственно плагин чата для личной переписки пользователей я сделал и теперь думаю нужна ли в нём функция шифрования сообщений.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Нужна ли функция шифрования сообщений в чате
75.28% Нужна67
6.74% Не нужна6
17.98% Мне всё равно так как я не планирую использовать в своих проектах этот модуль чата16
Проголосовали 89 пользователей. Воздержались 18 пользователей.