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

时间:2016-04-13 22:12:37

标签: ios encryption cryptography

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

问题是您似乎使用 public 密钥加密并使用私有密钥进行解密,这与我想要的相反。

还值得一提的是,我使用名为SwiftyRSA的库仅支持使用公钥进行加密,而在使用私钥时却不喜欢它。我相信这是因为它被kSecAttrKeyClassPublic保存到钥匙串中,因为这是它所期待的,这会导致事情失败。

我已经读过这些键在技术上是可以互换的,但似乎我不能让它在我的实例中工作。这是因为他们的公钥有一个较小的指数?有没有办法让公钥成为" long"作为使用ssh-keygen的私钥,因此可以交换它们?如果没有,我该怎么办?

1 个答案:

答案 0 :(得分:0)

密钥并不总是可互换的(例如,具有CRT参数的RSA私钥),并且加密过程很可能不会保护密钥免受侧信道攻击。您不应使用私钥加密,期限。

如果您非常小心,可以使用带有邮件恢复功能的签名。

否则 - 如果您有足够的空间 - 您当然可以签署然后加密您的许可证。为了使其工作(没有额外的AES加密),您的加密密钥对必须比签名密钥大很多。