Имя: Пароль:
1C
1С v8
почему ПорядокБайтов для ДД не имеет значения?
,
0 DES
 
25.03.23
13:47
Записываю двоичные данные (20 байт) в файл при разных значениях ПорядокБайтов
    
ПотокКонечный = ФайловыеПотоки.ОткрытьДляЗаписи(ПолноеИмяФайла+"_B");    
    ЗаписьДанных = Новый ЗаписьДанных(ПотокКонечный,,ПорядокБайтов.BigEndian);
    ЗаписьДанных.Записать(ДД);
    ЗаписьДанных.Закрыть();
    ПотокКонечный.Закрыть();

ПотокКонечный = ФайловыеПотоки.ОткрытьДляЗаписи(ПолноеИмяФайла+"_L");    
    ЗаписьДанных = Новый ЗаписьДанных(ПотокКонечный,,ПорядокБайтов.LittleEndian);
    ЗаписьДанных.Записать(ДД);
    ЗаписьДанных.Закрыть();
    ПотокКонечный.Закрыть();

результат смотрю notepad++ с плагином HEX
никакой разницы в файлах.
Это так должно быть ?
1 Aleksey
 
25.03.23
13:52
может у тебя однобитовые знаяения и для них порядок байтов не играет роли
2 Кирпич
 
25.03.23
15:48
порядок байтов имеет смысл, когда записываешь в поток числа из нескольких байт. например, int32 - это 4 байта. вот эти 4 байта и будут перестанавливаться.
3 DES
 
25.03.23
16:28
как записывается хеш SHA-1 (20 байт) на NIX-сах ?
Потому что какая то какая то ерунда получается выходной код на никсах и на винде вроде по разному сохраняется в файл
4 DES
 
25.03.23
16:38
есть фича которая преобразует 20 байт (5 слов по 4 байта) из big-endian в little ?
5 Aleksey
 
25.03.23
17:00
(3) за порядок же BOM отвечает или он одинаковый и там и там?
6 DES
 
25.03.23
17:11
(5) без бома
7 Aleksey
 
25.03.23
17:12
(6) юникод и без бома? или это utf-8 кге априори все однобайтовое?
8 DES
 
25.03.23
17:32
функция на вебсервере вычисляет SHA1  и пишет в файл на клиенте.
наверно сервер на никсах
потому что делаю тоже самое на 1с8 но файл получается другой
9 Garykom
 
гуру
25.03.23
17:41
(8) вероятно у тебя "на 1с8" на вход функции другое подается

проверь кодировку входящих и учти бом если утф8
10 DES
 
25.03.23
17:47
(9)файл от SHA1 20 байт - бом не влазит

другая инфа на входе - маловероятно . Это канонизированный XML c того же сервера же.
11 Garykom
 
гуру
25.03.23
17:49
(10) вот этот твой xml ты и сервер по разному читаете перед тем как считать хеш
12 DES
 
25.03.23
17:51
Перепробовал  все типы канонизации - результат не различается.
написал на c# - результат такой же как и 1с8
но все не равно серверному.
серверный BE 8F 8D 91 D9 22 AB 0D 3C B4 E2 18 2A AC 04 34 AD 61 3A FA
1ц - шный AA A2 58 90 03 7B 24 86 6B FA 52 10 0E 92 95 32 70 7A AD 08
13 Garykom
 
гуру
25.03.23
17:54
(12) откуда ты знаешь что и как "функция на вебсервере вычисляет SHA1  и пишет в файл на клиенте." ?
14 DES
 
25.03.23
18:27
(13) ну из практики же
Есть файл, есть алгоритм, есть пример на C# (как бы на сервере так)
15 Garykom
 
гуру
25.03.23
18:39
(14) а подумать?
16 Chai Nic
 
25.03.23
19:41
(12) Символ конца строки в одном случае включается в хэш, в другом не включается?
17 DES
 
25.03.23
20:10
(15) в точку.
но в какую.
18 DES
 
25.03.23
20:17
(16) Нет. Канонизатор режет все что после последнего ">"
19 Chai Nic
 
25.03.23
20:22
(18) А как там с переносами строк? Юникс или виндовс?
20 vbus
 
25.03.23
21:32
для примера, файл hello word, (hw.txt) создан в Windows notepad++

Windows:
certutil -hashfile hw.txt sha1
Хэш SHA1 hw.txt:
2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
CertUtil: -hashfile — команда успешно выполнена.

Debian 4.19.194-3:
sha1sum hw.txt
2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  hw.txt
21 vbus
 
25.03.23
21:40
echo "hello world">hwd.txt

sha1sum hwd.txt
22596363b3de40b06f981fb85d82312e8c0ed511  hwd.txt

file hwd.txt
hwd.txt: ASCII text

file hw.txt
hw.txt: ASCII text, with no line terminators
22 DES
 
25.03.23
22:40
(21) Я так понимаю что hash SHA1 - он и в Африке SHA1
Проблема (наверно) в записи в файл, но и это не точно.
Прога на серверная, создает хэш пишет в файл, и потом же саа это проверяет. Так что ей без разницы как записано в файл, если она его по одному закону пишет и читает. А вот Клиентской программе как создать файл чтоб сервер скушал...
23 DES
 
25.03.23
22:45
(19) по правилам канонизации
а еще данные это одна строка, без ВК или ПС
24 ДедМорроз
 
25.03.23
23:34
Во-первых,файл должен быть без ByteOrderMark.
Во-вторых,кодировка должна быть utf-8.
В третьих,убрать символы завершения файла,если они есть (код 26).
И не забыть,что перевод строки должен быть два символа 13 и 10.
При передаче по http именно такие переводы строки в текстовых файлах получаются.
25 Garykom
 
гуру
26.03.23
01:06
я правильно понимаю что пытаешься для маркировки отправить?
26 DES
 
26.03.23
13:50
(25) ну типа того
XML канонизируется на сервере, вычисляется SHA1 (20 байт) , пишется в файл на клиенте.
Клиент подписывает хэш - получается файл формата XML. Сервер забирает файл подписи и соеденяет с исходным файлом данных. Потом все хранится в базе серверав виде одного документа.
Это точно.
Дальше наверно так:
При проверке достоверности этого документа отделяется часть подписи , проверяется её достоверность (кидается на клиента - клиент проверяется ,отвечает true/false),
Хэш вычисляется из документа и сравнивается с хэш из подписи, если они равны то Ок.
27 DES
 
26.03.23
13:53
т.е.хэш видно, каким он должен быть.
28 H A D G E H O G s
 
26.03.23
13:55
(26) Дичь какая-то. Зачем все так сложно и непонятно. Чего добиться то пытаетесь?
29 Garykom
 
гуру
26.03.23
14:06
(26) хехе
было такое когда для МДЛП делал
оказалось там надо xml правильно делать
т.е. там путаница с кодировками была и XML надо уже канонизированный отправлять
т.е. какой отправил, такой и хешить/подписывать надо
30 DES
 
26.03.23
16:48
(29) я же говорю - канонизирую и хэш считаю.
(28) что непонятно? достоверность электронного документа хранящегося на сервере гарантируется ЭЦП клиента.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс