反向使用RSA解密许可证代码:使用私钥加密,使用公钥解密



我想用一个秘密私钥加密一些与许可证代码有关的值,然后当它输入到用户的应用程序安装中时,它将用公钥(与应用程序一起存储)解密,以查看编码的数据,并确保它只由我创建。

问题是,你似乎用公钥加密,用私钥解密,这与我想要的相反。

还值得一提的是,我使用的名为SwiftyRSA的库只支持使用公钥加密,不喜欢使用私钥加密。我相信这是因为它被保存到kSecAttrKeyClassPublic的钥匙链中,因为这正是它所期望的,这会导致事情失败。

我读到钥匙在技术上是可互换的,但在我的例子中,我似乎无法让它发挥作用。这是因为公钥的指数较小吗?有没有一种方法可以使用ssh-keygen使公钥和私钥一样"长",从而能够交换它们?如果没有,我如何继续?

密钥并不总是可互换的(例如,具有CRT参数的RSA私钥),而且加密过程很可能无法保护密钥免受侧通道攻击。您不应该使用私钥进行加密,句号。

如果你真的很小心的话,你可以在邮件恢复中使用签名。

否则——如果你有足够的空间——你当然可以一直签名,然后加密你的许可证。要使其工作(没有额外的AES加密),您的加密密钥对必须比您的签名密钥大一点。

最新更新