基于弹跳城堡的GOST 3411算法

2022-05-30 00:00:00 encryption hmac bouncycastle java digest

我使用GOST算法来创建基于键的散列和使用弹跳城堡库的输入。下面的代码生成的散列与通过http://beautifytools.com/hmac-generator.php

等在线工具生成的散列不匹配
    HMac gMac= new HMac(new GOST3411Digest());

    byte[] key = "keyphrase".getBytes();
    byte[] input = "macinput".getBytes();

    gMac.init(new KeyParameter(key));

    gMac.update(input, 0, input.length);
    byte[] mac = new byte[gMac.getMacSize()];

    gMac.doFinal(mac, 0);
    BigInteger in = new BigInteger(1, mac);
    System.out.println(in.toString(16));

正常时,需要在MuleSoft内部调用API,对Hash进行验证并进行身份验证。基本上,加密用于生成身份验证令牌。

很长时间以来一直在提及堆栈溢出,但从未有机会发布任何问题。这是我的第一次:)

谢谢, 苏迪普


解决方案

GOST3411算法有几个Sbox选项,因此尝试在初始化时使用不同的选项。我在"D-测试"Sbox上有一些运气,它与大多数在线工具匹配,如果不是全部的话。您可以按如下方式初始化不同的SBox:

HMac mac = new HMac(new GOST3411Digest(GOST28147Engine.getSBox("D-Test")));

相关文章