因此,我试图用Java生成ECDSAwithHA256签名,为此,我使用的是BouncyCastle提供程序。曲线是secp521r1。
要初始化我正在使用的签名者:
public static final String SIGNATURE_ALGORITHEM = "SHA256withECDSA";
public void init() {
signer = Signature.getInstance(SIGNATURE_ALGORITHEM, BouncyCastleProvider.PROVIDER_NAME);
signer.initSign(privKey);
}
并签署我正在使用
public byte[] sign(byte[] bytes) throws SignatureException {
signer.update(bytes);
byte[] signature = signer.sign();
System.out.println("Signature lenght is " + signature.length);
return signature;
}
现在唯一的问题是,当我运行代码时,我得到的签名长度在137到139字节之间。但我希望得到的字节数始终相同。有人知道我必须更改什么,即我的签名长度始终相同,但仍然是标准的签名格式吗?
通常,Java加密(默认情况下为Bouncy)使用可变长度的ASN.1 DER对ECDSA(也称为DSA)签名进行编码。请参阅Neardupe
ECDSA签名长度并交叉https://crypto.stackexchange.com/questions/33095/shouldnt-a-
signature-using-ecdsa-be-exactly-96-bytes-
not-102-or-103
。
但是,对您来说幸运的是,Bouncy(1.51版以上)还实现了名称为 {hash}withPLAIN-ECDSA
或{hash}withCVC- ECDSA
(并且也用斜杠代替with
)的P1363样式固定长度编码。在这种情况下,CVC显然意味着卡可验证证书,尽管我不会认为签名编码是有限设备在证书验证中最困难的部分。
更新: Bouncy 1.61(2019-02)修复了注释中提到的“普通”编码中的错误。另外,在Java
9(2018-12)中,标准(Oracle)SunEC提供程序支持以下格式: {hash}withECDSAinP1363format
所以我尝试用Java生成一个ECDSAwithHA256签名,为此,我使用了BouncyCastle提供程序。曲线是secp521r1。 要初始化我正在使用的签名者:: 为了签名,我使用 现在唯一的问题是,当我运行代码时,我得到的签名长度在137到139字节之间。但是我希望得到的字节数总是相同的。有人知道我必须改变什么吗,我总是有相同的签名长度,但仍然是标准化的签名格式?
我试图用MergeContent处理器在磁盘上写一个文件,但是我得到的文件大小变化很大-从一行到806行不等。我多次重复这个过程,试图找出Apache NIFi MergeContent处理器中所述的换行demarcator--将demarcator设置为新行,我得到了真正随机大小的文件。 我需要设置哪些参数才能遵守以下逻辑? 建立单个bin 将所有流文件路由到bin 如果len(bin)>x或b
问题内容: ECDSA算法中256位EC密钥的签名长度将是多少?我想验证签名长度是否相同。如果某个机构可以帮助我设置一个EC钥匙,那将是很棒的。 问题答案: 这取决于您如何对签名进行编码。这是OpenSSL的代码段,用于测量DER格式的ECDSA签名的长度。 以prime256曲线上的EC_KEY作为参数的上述函数的结果是 sig_len在哪里。 您需要使用位EC密钥的字节来进行DER编码的ECD
我一直在努力解决RSA_verify的一个奇怪问题。我正在尝试使用C进行RSA签名,并使用C进行RSA验证。我已经使用OpenSSL命令生成了私钥和证书。 当我使用上面的消息,生成一个散列并使用RSA\u-sign对摘要进行签名时,我得到长度为256的签名(),并且RSA\u-sign返回的长度为256。我使用此长度进行验证,验证成功。 但是当我使用时,签名长度为60,RSA\u-sign返回25
本文向大家介绍解决PHP字符串长度不一致的问题,包括了解决PHP字符串长度不一致的问题的使用技巧和注意事项,需要的朋友参考一下 如下所示: 这两句就可以解决了。 以上这篇解决PHP字符串长度不一致的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
我不确定使用哪个函数来执行以下操作: 和都对这个长度不满意: