gifts2017

Шифрование текста, хеш сумма

Опубликовал Маским Константинович (MherArsh) в раздел Программирование - Защита и шифрование

Этот пример показывает, что использование шифрования и получение хеш суммы очень просто.
В обработке реализовано шифрование по алгоритму AES и получение хеш суммы MD5.
Все делается динамически, без использования файлов.

Шифрование - полезная штука, иногда возникают задачи, где без использования шифрования не обойтись.
Предположим, у вас есть программист, который занимается разработкой конфигурации и администрированием, естественно, разграничить его права нецелесообразно, потому что понадобится человек, кто будет занимается администрированием.

 А что делать, если есть данные, которые разработчик не должен видеть, но у него должен быть полный доступ к системе?
 Может показаться, что это парадокс, но есть решение!
 
Шифрование данных!

 Я просто продемонстрировал, как можно использовать то, что у нас есть под рукой, Вы можете сами выбрать желаемый алгоритм, документация по ссылке: https://msdn.microsoft.com/ru-ru/library/system.security.cryptography.aspx 

Обработкой пользоваться очень просто.

Надо:

Для шифрования

    1. Заполнить "Открытый текст" для шифрования
    2. Заполнить ключ пароль для шифрования
    3. Нажать на кнопку "Шифровать"

    В результате в поле "Закрытый текст" мы получим зашифрованную строку.

    P.S. т.к результатом шифрования является массив чисел для отображения в текстовом виде, я использую функцию
          "ЗначениеВСтрокуВнутр".
            В принципе, можно хранить или в хранилище значений, или написать свой какой-то алгоритм хранения массива. 

 Для расшифрования

    1. Заполняем закрытый текст
    2.
 Заполнить ключ пароль для расшифровки
    3. Нажимаем кнопку "Расшифровать" 


 В основном во всех блочных алгоритмах шифрования есть вектор инициализации.
Для наглядности обработка показывает этот вектор инициализации, каждый раз генерируется новый, поэтому если нужно иметь статичный, просто создайте массив со значениями из произвольного сгенерированного вектора. 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Шифрование.epf
.epf 8,18Kb
21.06.15
24
.epf 8,18Kb 24 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Андрей Моисеев (nihfalck) 15.04.15 16:54
скачать пока не могу, к сожалению. поэтому спрошу - как .Net - класс System.Security.Cryptography.AesManaged затащили в 1С? или обошлись RijndaelManaged?
2. Маским Константинович (MherArsh) 15.04.15 20:02
(1) nihfalck, испоьлзовал класс RijndaelManaged
3. Маским Константинович (MherArsh) 16.04.15 10:14
(1) nihfalck, вопрос в том что для классу System.Security.Cryptography.AesManaged не предоставляется COM интерфейс.
Список доступных криптографических классов которые доступны можно посмотреть программой oleview.exe от Microsoft.

4. Андрей Моисеев (nihfalck) 16.04.15 13:19
(3) MherArsh, спасибо. про утилиту oleview.exe не знал - сидел мучился методом тыка.
5. Маским Константинович (MherArsh) 16.04.15 17:43
6. eugenie zheludkov (eugeniezheludkov) 20.04.15 03:03
жаль что base64, base58, hex не изобрели до сих пор, тоже мучаюсь pgp ключи храню в виде внутреннего формата 1С {#,N,100,....}...
ПС: в 1С существует несколько способов превратить массив в base64.
в случае с шифрами есть класс stringbuilder с его appendFormat

	Текст = Новый COMОбъект("System.Text.UTF8Encoding");
	КриптоSHA512 = Новый COMОбъект("System.Security.Cryptography.SHA512Managed");
	КриптоSHA1 = Новый COMОбъект("System.Security.Cryptography.SHA1Managed");
	КриптоSHA256 = Новый COMОбъект("System.Security.Cryptography.SHA256Managed");
	КриптоMD5 = Новый  COMОбъект("System.Security.Cryptography.MD5CryptoServiceProvider");
	
	оStr = Новый COMОбъект("System.Text.StringBuilder");
	Хэш512 = КриптоSHA512.ComputeHash_2(Текст.GetBytes_4(Т)).Выгрузить();	
	Хэш1 = КриптоSHA1.ComputeHash_2(Текст.GetBytes_4(Т)).Выгрузить();
	Хэш256 = КриптоSHA256.ComputeHash_2(Текст.GetBytes_4(Т)).Выгрузить();
	Для Каждого стр Из  Хэш1 Цикл
		оStr.AppendFormat("{0:x02}", стр);
    КонецЦикла;
	Сообщить(  оStr.ToString);
...Показать Скрыть


или так еще значениевстрокувнутр(новый хранилищезначений(массив)) так будет запись короче и проще
nihfalck; MherArsh; +2 Ответить 1
7. Маским Константинович (MherArsh) 20.04.15 11:12
(6) eugeniezheludkov, Привет! Спасибо, вариант хороший!
Я с начала тоже думал привести к определенному формату, но в результате возврата мы получаем массив,
ее можно хранить в хранилище значений я в строку перевел чтобы было наглядно, и вообще старался поменьше
внешнего использовать :)

А для base64 есть класс доступный через COM.
Называется - "FromBase64Transform"
https://msdn.microsoft.com/ru-ru/library/system.security.cryptography.frombase64transform.aspx

Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа