首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用secp256r1曲线(BouncyCastle)生成ECDSA签名长度为127的签名

用secp256r1曲线(BouncyCastle)生成ECDSA签名长度为127的签名
EN

Stack Overflow用户
提问于 2015-07-09 16:06:28
回答 1查看 2.2K关注 0票数 1

我正在用secp256r1曲线实现ECDSA签名生成,用BouncyCastle实现SHA256算法。

对于某些输入,签名长度为127个字符。当签名存储到BigInteger类中的ECDSASigner数据类型时,我感到开头的"0“正在被删除。

我添加了rfc6979 基于确定性方法的ECDSA签名的示例

守则的有关部分如下:

代码语言:javascript
复制
//Private key used in hex format -C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721
        String secretNumberK = "09F634B188CEFD98E7EC88B1AA9852D734D0BC272F7D2A47DECC6EBEB375AAD4";
        SecureRandom secureRandom = new FixedSecureRandom(Hex.decode(secretNumber));
        ECPrivateKeyParameters ecPrivateKeySpec = Util.getECPriKeyParameter(ecPrivateKey);//it is the PrivateKey of the sample shown 
        byte[]  messageInHex = Hex.decode("test");
        
         ECDSASigner ecdsaSigner = new ECDSASigner();

        ecdsaSigner.init(true, new ParametersWithRandom(ecPrivateKeySpec,
                secureRandom));

         BigInteger[]  sig = ecdsaSigner.generateSignature(Util
                .generateSHAHash(messageInHex));
        flag = true;
        LOG.debug("r:: " + sig[0].toString(16).toString());
        LOG.debug("s:: " + sig[1].toString(16).toString());

预期签署的R和S文件:-

代码语言:javascript
复制
 r = 0EAFEA039B20E9B42309FB1D89E213057CBF973DC0CFC8F129EDDDC800EF7719
 s = 4861F0491E6998B9455193E34E7B0D284DDD7149A74B95B9261F13ABDE940954

但我得到了

代码语言:javascript
复制
r = EAFEA039B20E9B42309FB1D89E213057CBF973DC0CFC8F129EDDDC800EF7719
s = 4861F0491E6998B9455193E34E7B0D284DDD7149A74B95B9261F13ABDE940954

唯一的区别是r值中的零。因为这样的签名长度只有127.

如果我的推断是正确的,请告诉我。这是弹跳城堡里的窃听器吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-09 20:50:27

这不是BouncyCastle中的一个bug。BouncyCastle把BigInteger还给你了。我不相信Java的BigInteger类存储关于应该打印多少前导零的任何信息,并且在使用.toString(16).toString()时没有提供这些信息,因此不可避免的结果是前导零不会被显示。

你知道,例如,十六进制“0 EAF”和十六进制"EAF“是同一个数字,对吗?所以这只是一个字符串格式化问题。数字是正确的。

如果希望字符串与文档中的文本完全匹配,则在格式化字符串时需要执行一些额外的工作,以便添加前导零。

以下是类似的问题和资源:

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31322750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档