|
Цифровая подпись. Какие допустимые входные данные ?
|
|||
---|---|---|---|
#18+
Привет. Мне нужно сделать служебную библиотеку, для создания/проверки цифровой подписи. Системные API функции принимают массив байт. Вопросик такой. Какие типы, на подписывание, я могу использовать при создании своего API ? Особенно интересует возможность подписывания строки ! Я вижу лишь два возможных типа: массив байт, и путь к файлу, который я сам смогу считать. А как быть со строкой ? Не вижу возможности подписывать непосредственно строку - ведь я не знаю ее кодировки. Или я ошибаюсь и есть возможность преобразовать любую строку в массив байт и его подписать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2014, 17:57 |
|
Цифровая подпись. Какие допустимые входные данные ?
|
|||
---|---|---|---|
#18+
Вот тут есть некое решение http://stackoverflow.com/questions/472906/converting-a-string-to-byte-array Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Насколько оно корректное ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2014, 18:06 |
|
Цифровая подпись. Какие допустимые входные данные ?
|
|||
---|---|---|---|
#18+
Ростигай, в комментариях к ответу описаны подводные камни такого подхода. Лучше через класс Encoding делать: Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2014, 18:54 |
|
Цифровая подпись. Какие допустимые входные данные ?
|
|||
---|---|---|---|
#18+
РостигайИли я ошибаюсь и есть возможность преобразовать любую строку в массив байт и его подписать ? Нет понятия Строка в применении к ЭЦП. ЭЦП гарантирует целостность массива байт, и никак иначе. Поэтому берите строку, получайте из неё массив байт и подписывайте его. А какая кодировка - это уже не важно. Это ответственность бизнес-логики как интерпретировать некий массив байтов ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2014, 19:12 |
|
Цифровая подпись. Какие допустимые входные данные ?
|
|||
---|---|---|---|
#18+
Arm79РостигайИли я ошибаюсь и есть возможность преобразовать любую строку в массив байт и его подписать ? Нет понятия Строка в применении к ЭЦП. ЭЦП гарантирует целостность массива байт, и никак иначе. Поэтому берите строку, получайте из неё массив байт и подписывайте его. А какая кодировка - это уже не важно. Это ответственность бизнес-логики как интерпретировать некий массив байтов В том и дело. Как получить из строки массив байт ? Я вот приложил нагугленный код, но bazile не согласен с решением. Суть в том. что в либу передается строка, но не указана кодировка. А значит, я не могу преобразовать строку в массив байт... Так ? Или все же могу ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2014, 19:31 |
|
Цифровая подпись. Какие допустимые входные данные ?
|
|||
---|---|---|---|
#18+
bazile, UTF8... А откуда мне знать какая там кодировка у полученной строки ? Или вводить дополнительный параметр для кодировки ? Эх... Все бы хорошо, если бы не проблема, что я пишу COM либу... В других языках нету класса энкодинга. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2014, 19:32 |
|
Цифровая подпись. Какие допустимые входные данные ?
|
|||
---|---|---|---|
#18+
Ростигай, без знания кодировки невозможно правильно восстановить исходную строку. Пример который ты нашел на SO тоже полагается на кодировку - только неявно. Строка в .NET хранится в памяти в кодировке UTF-16 и в этой кодировке байты и возвращаются. Раз ты пишешь библиотеку, то возможно придется явно передавать кодировку в метод. Дело здесь не в COM или отсутствии класса Encoding в другиых языках. Кодировка это универсальное понятие. Чужой код который будет анализировать "твою подпись", тоже должен преобразовать строку в массив байтов (так или иначе) и вычислить подпись чтобы убедиться в неизменности данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2014, 20:28 |
|
|
start [/forum/topic.php?fid=20&msg=38779065&tid=1402352]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 116ms |
0 / 0 |