首页 > 解决方案 > Bouncycastle GOST 34.311 哈希与测试示例不同

问题描述

请您帮忙解决哈希函数GOST 34.311bouncycastle 问题。不知何故,结果与测试向量不同。Wiki 说:“ GOST(“快速棕色狐狸跳过懒狗”)= 77b7fa410c9ac58a25f49bca7d0468c9296529315eaca76bd1a10f376d1f4294

使用 Digest Gost 34.11 时:

var testString = "The quick brown fox jumps over the lazy dog";
var result = (new GOST3411.Digest()).digest(testString.getBytes());
var resHex2 = new BigInteger(1, result).toString(16);
assertEquals("77b7fa410c9ac58a25f49bca7d0468c9296529315eaca76bd1a10f376d1f4294", resHex2.toUpperCase());

得到:

org.opentest4j.AssertionFailedError: 
Expected :77b7fa410c9ac58a25f49bca7d0468c9296529315eaca76bd1a10f376d1f4294
Actual   :9004294A361A508C586FE53D1F1B02746765E71B765472786E4770D565830A76

2012版:

var testString = "The quick brown fox jumps over the lazy dog";
var result = (new GOST3411.Digest2012_256()).digest(testString.getBytes());
var resHex2 = new BigInteger(1, result).toString(16);
assertEquals("77b7fa410c9ac58a25f49bca7d0468c9296529315eaca76bd1a10f376d1f4294", resHex2.toUpperCase());

得到 :

AssertionFailedError: 
Expected :77b7fa410c9ac58a25f49bca7d0468c9296529315eaca76bd1a10f376d1f4294
Actual   :3E7DEA7F2384B6C5A3D0E24AAA29C05E89DDD762145030EC22C71A6DB8B2C1F4

BouncyCastle 是否支持原点 GOST 34.311 - 95?计算它的正确方法是什么?

标签: hashbouncycastlejava-securitygost3411

解决方案


BC 正在使用标准的GOST R 34.11-2012( streebog ) 版本

$ rhash -G -m "The quick brown fox jumps over the lazy dog"
3e7dea7f2384b6c5a3d0e24aaa29c05e89ddd762145030ec22c71a6db8b2c1f4  (message)

维基百科样本适用于已弃用的GOST R 34.11-94版本

$ rhash --gost94 -m "The quick brown fox jumps over the lazy dog"
77b7fa410c9ac58a25f49bca7d0468c9296529315eaca76bd1a10f376d1f4294  (message)

如果你真的想要旧的,你可能应该要求平原GOST3411Digest而不是GOST3411.Digest2012_256新的。


推荐阅读