创建小于 1024 位的加密签名
我需要签署 QR 码,并且我尝试使用一些标准 .Net 代码来创建加密签名:
var privateKey = (RSACryptoServiceProvider) certificate.PrivateKey;
var data = Encoding.UTF8.GetBytes( payload );
var signature = privateKey.SignData( data, new SHA1Managed() );
这可行,但签名长度为 1024 位 - 对于我想要创建的 QR 码来说太多了。
有谁知道是否可以生成更短的签名,例如 512 位?
或者,是否有签署二维码的标准?
I need to sign a QR code and I tried using some standard .Net code to create a cryptographic signature:
var privateKey = (RSACryptoServiceProvider) certificate.PrivateKey;
var data = Encoding.UTF8.GetBytes( payload );
var signature = privateKey.SignData( data, new SHA1Managed() );
This works but the signature is 1024 bits long - too much for the QR code I want to create.
Does anyone know if it's possible to generate a shorter signature, e.g. 512 bits?
Alternatively, is there a standard for signing QR codes?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
签名的长度将与您正在使用的密钥的模数相同。如果您在创建证书时未指定模数,它将默认为 1024 位。您可以将长度更改为 512,然后生成的签名将为 512 位。
要在创建证书时更改模数,请使用 RSAParameters 结构体。
The signature will be the same length as the modulus for the keys you are using. If you are not specifying the modulus when creating the certificate it will default to 1024 bits. You can change the length to 512 and then the resulting signature will be 512 bits.
To change the modulus when creating the certificate use the RSAParameters struct.