0

伙计们,我得到了一个项目(服务器端 c# sn 生成器),我必须为其实施基本许可系统(它更像是一个测试而不是实际项目),但是有一些要求:

  1. 它必须使用 RSA 2048
  2. 它必须产生对人类友好的 16 个字符 (0-F),由 3 个破折号分隔(总共 19 个符号)

客户端部分也在验证序列号,如下所示:

VerifyMyKey(p1, p2, p3);

在哪里:

  • p1 是 xml 编码的公共/指数值
  • p2 是散列的唯一用户 ID(在我的情况下,项目使用的是 sha1)
  • bp3 是漂亮的序列号

是否有任何 SignData 生成数字的示例,例如:

1111-1111-1111-1111

或类似的东西,因为我现在得到的只是正在工作的base64编码字符串,但它对人类不友好。

有没有人有任何想法?

4

1 回答 1

2

你的意思是签名应该正好是 16 个字节长?这对于 2048 位 RSA 是不可能的。根据定义,一个密文块(包括数字签名)的长度与密钥大小相同,即 2048 位 = 256 字节。RSA 适用于块,它不是流密码。任何东西都不会正确解密/验证。

如果您希望输出具有任意长度但包含 16 个十六进制数字,那是另一回事。RSA 将数据输出为字节数组,随意将它们表示为十六进制数字 - 每个字节两位数。一个 2048 位二进制数据块的长度为 512 个十六进制数字。

于 2012-04-16T16:10:00.383 回答