Поиск по сайту
Результаты поиска по тегам 'криптография'.
Найдено 2 результата
-
В сотрудничестве с @Zer0Galaxy мы доработали целочисленную библиотеку metaint. Итак, встречайте: RSA Криптосистема с открытым ключом Теперь на "отечественной" библиотеке metaint Для поиска простых чисел используется Тест Миллера — Рабина Поддерживаются ключи с кастомным количеством бит А так же полная оптимизация генерации ключей. Осталось лишь оптимизировать поиск простых чисел и ключи в 2048 бит в ваших руках. Установка pastebin run 1xudmTa7 - выберите RSA и установите. С hpm проблемы( Использование Библиотека возвращает класс. Для получения инстанса - просто require("RSA")(<params>): RSA_instance Аргументом (он один) конструктора класса может быть: строка - путь к файлу собственной структуры. В нем обязательно должен быть публичный ключ. число (битовая длина ключа, не менее 16 - иначе будет недоступно шифрование текста. Да и не выйдет меньше 16) таблица. В ней нужно 3 поля - private_key, public_key и metadata, структура как у файла ключа библиотеки. Так же должен быть публичный ключ. Приватный ключ и метадата необязательны - они хранятся у создателя ключа. Методы инстанса RSA RSA:save(filepath: string) - сохранить ключ в файл RSA:encrypt(number:number) - зашифровать число RSA:decrypt(cryptedNum: number) - расшифровать число. Кинет ошибку, если нет приватного ключа. RSA:sign(number: number) - подписать число. Кинет ошибку, если нет приватного ключа. RSA:verify(number:number, signedNumber: number): boolean - проверить подпись. Вернет true, если подпись верна. Работа с текстом. Очень медленно, битовая длина ключа - минимум 32 бит. RSA:textEncrypt(text: string[,saltLen=4: number]):table[metaint] - шифрует текст поблочно, перемешивая блоки - защита от DPI. Блок равен 32 бит. RSA:textDecrypt(cryptedText: table[, saltLen=4: number]): string - расшифровывает текст с учетом соли. Применяет обратное преобразование текста для расшифровки - защита от DPI, все дела. RSA:textSign(text:string): table[metaint] - поблочно подписывает текст, перемешивая блоки. RSA:textVerify(text:string, signedBlocks: table[metaint]): boolean, string - проверяет подпись текста. Второе значение - полученная строка. Более полная документация с описанием алгоритмов. Готовится оптимизация библиотеки, прогресс можно посмотреть в ветке beta репозитория. Спойлер: стоит на месте, ищу способ выполнения длинных битовых операций
- 72 ответа
-
- 9
-
- цифровая подпись
- шифрование
- (и ещё 1 )
-
Давным-давно Zer0Galaxy выложил эту программу в теме, которая будет ниже (т.е. в конце страницы): Я же ее перенес и преобразовал в библиотеку: Методы те же - getkey(key:string), crypt(str:string,key:table), decrypt(cryptedStr:string,key:table), а так же md5(str:string) - возвращает хеш определенной строки. Если будут ошибки, отпишите. Я тестировал, все работает, однако могут быть ошибки или даже несоответствие алгоритму (что крайне маловероятно, но возможно - я заменил какую-то функцию, похожую на rshift из bit32 на этот самый rshift) Сама тема - http://computercraft.ru/topic/96-razmyshleniia-o-shifrovanii-i-bezopasnoi-peredach/ Команда для установки - pastebin get uDnh4RLi /lib/crypt.lua
- 3 ответа
-
- 1