|
1 / 1 / 1
Регистрация: 27.10.2013
Сообщений: 44
|
||||||||||||||||
.NET 4.x Работа с небезопасным кодом23.11.2014, 16:16. Показов 1515. Ответов 3
Метки нет (Все метки)
Здравствуйте! Создаю программу симметричного шифрования. Пользователю нужно написать ключ (один символ) и сообщение, которое он хочет зашифровать. Для самого шифрования я на ассемблере написал функцию и сварганил dll, чтобы работать с этой функций в VS. Проблема естественно в том, что ничего не выходит) Если сообщение, которое зашифровывается, слишком длинное, то возникает переполнение буфера на выходе из той самой функции в dll. Даже если ввести просто один символ для шифрования, возникает исключение System.AccessViolationException и опять-таки, что-то не так именно с той функцией. Помогите пожалуйста исправить проблему!
Вот форма: Вот код кнопки "Зашифровать сообщение":
0
|
||||||||||||||||
| 23.11.2014, 16:16 | |
|
Ответы с готовыми решениями:
3
работа с двоичным кодом |
|
Администратор
|
|||||||||||
| 23.11.2014, 20:55 | |||||||||||
Сообщение было отмечено Jeckor как решение
Решение
Jeckor, в ассемблерном коде делается цикл по кол-ву символов в строке с шагом по строке в 4 байта. То есть ты исходишь из того что строка состоит из 4 байтовых символов. Это не так хотя бы потому что ты попросил использовать однобайтовую кодировку при маршаллинге параметра message. Таким образом ты всегда выходишь за пределы "своей" памяти и портишь её.
Вторая ошибка в том что результат шифрования трактуется как строка. .NET использует кодировку UTF-16 для хранения типа string и кодировку UTF-8 при работе с текстовыми файлами. Особенность обоих кодировок в том что кол-во байтов на один символ может меняться и в том что не все байты являются разрешенными. Проверить второе утверждение довольно просто. Возьмем такую функцию:
Правильная реализация шифрования с помощью XOR для многобайтовых кодировок должна возвращать массив байтов, а не строку. Далее мы запишем этот массив как-есть в файл. При обратной операции мы считаем массив байтов, применим xor и получим строку. Возможно такой подход тебе не подойдет т.к. ты хочешь отобразить результат шифрования на экране. Думаю тебе нужно выбрать какой-то другой алгоритм. Шифр Цезаря, например. Советую также написать сначала реализацию на C# а потом уже браться за ассемблер. И, кстати говоря, чем обусловлен выбор ассемблера?
1
|
|||||||||||
|
1 / 1 / 1
Регистрация: 27.10.2013
Сообщений: 44
|
|
| 24.11.2014, 08:50 [ТС] | |
|
Спасибо за подробное разъяснение. Воспользуюсь советом изменить алгоритм шифрования) Выбор ассемблера обусловлен заданием курсового проекта написать программу симметричного шифрования на MASM. Я не выбирал)
0
|
|
|
1 / 1 / 1
Регистрация: 27.10.2013
Сообщений: 44
|
||||||
| 24.11.2014, 11:09 [ТС] | ||||||
|
А ты не можешь подсказать, как в моем случае вернуть строку из функции Coding? Я исправил все, на что ты указываешь и ошибок (необработанных исключений) больше не возникает. Однако код все равно работает неправильно, т.к. возвращает то же самое значение, которое я передаю. Воть:
Алгоритм шифрования тоже выбрал тот, который ты мне подсказал - Цезаря. Каждый символ в сообщении заменяю заменяю в зависимости от длины ключа, т.е. если длина ключа 4 символа, то заменяю на четвертый идущий после него символ.
0
|
||||||
| 24.11.2014, 11:09 | |
|
Помогаю со студенческими работами здесь
4
Работа с HTML кодом Работа с кодом на закачку файла Графический интерфейс. Работа с кодом Работа с пролог кодом из среды С++ Работа с готовым кодом страницы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Настройка записи справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|