Pull to refresh
0
Star.Comet
SaaS comet сервис

Шифрование на JavaScript с использованием библиотеки pidCrypt

Reading time3 min
Views26K
pidCrypt это open source библиотека криптографических алгоритмов. Поддерживает RSA и AES шифрование/дешифрование, и расчёт MD5 и SHA хэшей.

Base64


Base64
Кодирование Base64 может быть полезно, если в окружении HTTP используется информация, длину которой можно точно определить. Также многим приложениям необходимо кодировать двоичные данные для удобства включения в URL, скрытые поля форм, и здесь Base64 удобно не только для компактного представления, но и относительной нечитаемостью для попытки выяснения случайным человеком-наблюдателем природы данных.
Пример использования pidCrypt для работы с Base64 (демо)
var myString = "This is some text";
//encoding:
var b64encoded = pidCryptUtil.encodeBase64(myString);
//decoding:
var b64decoded = pidCryptUtil.decodeBase64(b64encoded);


AES


Advanced Encryption Standard (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 является одним из самых распространённых алгоритмов симметричного шифрования.
Пример симметричного шифрования 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 я искал довольно давно когда думал про создание чата с оконечным шифрованием или веб-сервиса заметок с шифрованием текста заметок на стороне клиента. Собственно плагин чата для личной переписки пользователей я сделал и теперь думаю нужна ли в нём функция шифрования сообщений.
Only registered users can participate in poll. Log in, please.
Нужна ли функция шифрования сообщений в чате
75.28% Нужна67
6.74% Не нужна6
17.98% Мне всё равно так как я не планирую использовать в своих проектах этот модуль чата16
89 users voted. 18 users abstained.
Tags:
Hubs:
-2
Comments7

Articles

Change theme settings

Information

Website
comet-server.ru
Registered
Founded
Employees
1 employee (me only)
Location
Россия