.NET RSA 签名/验证数据许可密钥
本文关键字:数据 许可 密钥 验证 RSA 签名 NET | 更新日期: 2023-09-27 18:31:28
>伙计们,我得到了一个项目(服务器端 C# sn 生成器),我必须为其实现基本的许可系统(它更像是一个测试而不是实际项目),但是有一些要求:
- 它必须使用 RSA 2048
- 它必须生产人性化的 16 个字符 (0-F),由 3 个破折号分隔(总共 19 个符号)
此外,客户端部分正在验证序列号,如下所示:
VerifyMyKey(p1, p2, p3);
哪里:
- P1 是 XML 编码的公共/指数值
- P2 是散列的唯一用户 ID(在我的情况下,项目使用的是 SHA1)
- BP3 是漂亮的序列号
是否有任何 SignData 生成数字的示例,例如:
1111-1111-1111-1111
或类似的东西,因为我现在得到的只是 base64 编码的字符串,它正在工作,但它对人类不友好。
有人有什么想法吗?
你的意思是签名应该正好是 16 个字节长?这在 2048 位 RSA 中是不可能的。根据定义,一个密码文本块(包括数字签名)的长度与密钥大小相同,即 2048 位 = 256 字节。RSA与块一起工作,它不是流密码。任何不足的东西都不会正确解密/验证。
如果您希望输出具有任意长度但由 16 个十六进制数字组成,那是另一回事。RSA 将数据输出为字节数组,请随意将它们表示为十六进制数字 - 每字节两位数。一个 2048 位二进制数据块的长度为 512 个十六进制数字。