我正在实施一个简单的许可证文件系统,并且想知道我在当前的实施行中是否犯了任何错误。
消息数据小于密钥。我正在使用 RSA,密钥大小为 3072 位。
许可证的颁发者生成要签名的消息,并使用简单的基于 RSA 的方法对其进行签名,然后应用类似的方法对消息进行加密。加密消息和签名一起存储为许可证文件。
- sha512 的消息。
- 使用私钥对哈希进行签名。
- 使用私钥对消息进行签名。
- 连接和传输。
收到后,验证过程是:
- 使用公钥解密消息
- 散列消息
- 使用公钥从文件中解密哈希,并与本地哈希进行比较。
到目前为止,该实现工作正常,并且似乎是有效的。
我目前正在零填充消息以匹配密钥大小,这可能是一个糟糕的举动(我认为我应该使用 PKCS 填充算法,如 1 或 1.5?)
这个策略看起来有效吗?是否有任何明显的缺陷或我忽略的观点?