Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline dencat  
#1 Оставлено : 26 ноября 2014 г. 20:13:34(UTC)
dencat

Статус: Новичок

Группы: Участники
Зарегистрирован: 26.11.2014(UTC)
Сообщений: 1

Здравствуйте.
При снятии хэша с файла c содержимым "012345678901234567890123456789012345678901234567890123456789012" (пример из ГОСТа) по алгоритму ГОСТ Р 3411-2012 cpverify.exe выдает:
B1450DA1A45F9B5DCCD3686DD88245261BA9CB425722F2530C5821B24EABF1AF00DA038F67B7A32883C456470F423C112E4A1833B280FEF7149787191C46F684

что есть перевернутый результат из ГОСТа:
486F64C1917879417FEF082B3381A4E211C324F074654C38823A7B76F830AD00FA1FBAE42B1285C0352F227524BC9AB16254288DD6863DCCD5B9F54A1AD0541B

Я так понимаю, что используется младший порядок байтов, но разве в этом случае результат должен быть не таким:
1B54D01A4AF5B9D5CC3D86D68D285462B19ABC2475222F35C085122BE4BA1FFA00AD30F8767B3A82384C6574F024C311E2A481332B08EF7F41797891C1646F48
?
Offline Максим Коллегин  
#2 Оставлено : 27 ноября 2014 г. 0:53:48(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Таким. в новой версии изменили, выложим в ближайшее время.
Знания в базе знаний, поддержка в техподдержке
Offline slavw  
#3 Оставлено : 4 февраля 2015 г. 10:46:05(UTC)
slavw

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.01.2015(UTC)
Сообщений: 46
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 22 раз в 12 постах
версия CSP 4.0.9106

контрольное значение хеша
GOST("abc") = B285056DBF18D7392D7677369524DD14747459ED8143997E163B2986F92FD42C (википедия)
хэш, вычисленный CryptCreateHash+CryptHashData+CryptGetHashParam, возвращает точно такое же значение...

вычисление хэша с помощью утилиты cpverify (содержимое файла 1.txt = 'abc'):
C:\Program Files (x86)\Crypto Pro\CSP>cpverify.exe -mk c:\sxe7\1.txt -alg GR3411

2B5850D6FB817D93D26777635942DD41474795DE183499E761B392689FF24DC2

почему старшие и младшие биты в байтах оказались поменены местами..? 2B вместо B2, 58 вместо 85, и т.д.
Offline Максим Коллегин  
#4 Оставлено : 4 февраля 2015 г. 14:21:15(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Используйте последнюю версию.
Но cpverify возвращает перевернутый хэш для 94 года по историческим причинам, для 2012 должно быть в нормальном виде.
Знания в базе знаний, поддержка в техподдержке
Offline slavw  
#5 Оставлено : 4 февраля 2015 г. 14:45:34(UTC)
slavw

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.01.2015(UTC)
Сообщений: 46
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 22 раз в 12 постах
C:\Program Files (x86)\Crypto Pro\CSP>cpverify -mk c:\sxe7\1.txt -alg GR3411_2012_256
E49291FC31E74DE14CBF26076C8162CCF4FF6B0643E1A03F86C80D26D6324B18

вот что выдает для GR3411_2012_256... т.е. совсем что то другое (1.txt = 'abc')

ну как так то..? а..? ну как так..?
Offline slavw  
#6 Оставлено : 4 февраля 2015 г. 14:55:18(UTC)
slavw

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.01.2015(UTC)
Сообщений: 46
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 22 раз в 12 постах
а какая последняя версия CSP..? не вижу на сайте...
Offline Максим Коллегин  
#7 Оставлено : 4 февраля 2015 г. 15:08:14(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Предварительная версия КриптоПро CSP 4.0.9461 (Euler) от 7.12.2014.
Знания в базе знаний, поддержка в техподдержке
Offline slavw  
#8 Оставлено : 4 февраля 2015 г. 16:07:49(UTC)
slavw

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.01.2015(UTC)
Сообщений: 46
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 22 раз в 12 постах
константа OID_HashVerbaO = '1.2.643.2.2.30.1' ? (или нет... я уже не уверен...)
а для алгоритма GR3411_2012_256 ...? какая..? не скажете..?
Offline Максим Коллегин  
#9 Оставлено : 4 февраля 2015 г. 16:42:00(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Никакой, у хэша 2012 года один набор параметров.
Знания в базе знаний, поддержка в техподдержке
Offline slavw  
#10 Оставлено : 4 февраля 2015 г. 16:58:16(UTC)
slavw

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.01.2015(UTC)
Сообщений: 46
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 22 раз в 12 постах
вот где здесь можно ошибиться? я две недели уже с ума схожу:
все считает, но смэв ни в какую не хочет принимать подпись (участок кода с подписью хеша опущен, если надо приведу полностью...)

var
OID_HashVerbaO:ansistring='1.2.643.2.2.30.2';
const
CALG_GR3411 = 32798;

procedure GetHashStream2(Container: WideString; DataStream: TStream; HashStream: TStream);
var
hProv: HCRYPTPROV;
DataLen: DWORD;
hHash: HCRYPTHASH;
InStream, OutStream: TBytesStream;
dwKeySpec: DWORD;
begin
dwKeySpec:=AT_KEYEXCHANGE; //}AT_SIGNATURE;
InStream:=TBytesStream.Create;
OutStream:=TBytesStream.Create;
try

InStream.CopyFrom(DataStream,DataStream.Size);

CryptCheck(CryptAcquireContext(@hProv, @Container[1], nil, 75, 0), 'CryptAcquireContext');
try

CryptCheck(CryptCreateHash(hProv, CALG_GR3411, 0, 0, @hHash), 'CryptCreateHash');
try
CryptCheck(CryptSetHashParam(hHash, HP_OID, @OID_HashVerbaO[1], 0),'CryptSetHashParam');
CryptCheck(CryptHashData(hHash, InStream.Memory, InStream.Size, 0), 'CryptHashData');
CryptCheck(CryptGetHashParam(hHash, HP_HASHVAL, nil, @DataLen, 0), 'CryptGetHashParam');
OutStream.Position:=0;
OutStream.Size:=DataLen;
CryptCheck(CryptGetHashParam(hHash, HP_HASHVAL, OutStream.Memory, @DataLen, 0), 'CryptGetHashParam');
HashStream.CopyFrom(OutStream,OutStream.Size);
finally
CryptCheck(CryptDestroyHash(hHash), 'CryptDestroyHash');
end;

finally
CryptCheck(CryptReleaseContext(hProv, 0), 'CryptReleaseContext');
end;

finally
InStream.Free;
OutStream.Free;
end;

end;
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.