Коллеги, правильно ли я делаю хеш переменной data (C#) ?
IntPtr hProv = new IntPtr();
bool retVal = CryptAcquireContext(out hProv, null, Crypt.CP_GR3410_2001_PROV_A, Crypt.PROV_GOST_2001_DH, Crypt.CRYPT_VERIFYCONTEXT);
IntPtr hHash = new IntPtr();
retVal = CryptCreateHash(hProv, Crypt.CALG_GR3411, IntPtr.Zero, 0, out hHash);
int dataLen = data.Length;
retVal = CryptHashData(hHash, data, dataLen, 0);
int bufferLen = 32; // hash size
byte[] buffer = new byte[bufferLen];
retVal = CryptGetHashParam(hHash, HP_HASHVAL, buffer, ref bufferLen, 0);
retVal = CryptDestroyHash(hHash);
retVal = CryptReleaseContext(hProv, 0);
string dataDigest = Convert.ToBase64String(buffer, 0, buffer.Length);
В результате от data="" мы имеем "981e5f3ca30c841487830f84fb433e13ac1101569b9c13584ac483234cd656c0", а по ГОСТу должно быть
"ce85b99cc46752fffee35cab9a7b0278abb4c2d2055cff685af4912c49490f8d"
В чем проблема? Подозреваю что нужно указывать доп. параметры, возможно параметры S-BOX ?
Отредактировано пользователем 19 марта 2010 г. 17:03:31(UTC)
| Причина: Не указана