我想用一个秘密私钥加密一些与许可证代码相关的值,然后当它在用户的应用程序安装中输入时,它将使用公钥解密(存储在app)查看编码数据并确保它仅由我创建。
问题是您似乎使用 public 密钥加密并使用私有密钥进行解密,这与我想要的相反。
还值得一提的是,我使用名为SwiftyRSA
的库仅支持使用公钥进行加密,而在使用私钥时却不喜欢它。我相信这是因为它被kSecAttrKeyClassPublic
保存到钥匙串中,因为这是它所期待的,这会导致事情失败。
我已经读过这些键在技术上是可以互换的,但似乎我不能让它在我的实例中工作。这是因为他们的公钥有一个较小的指数?有没有办法让公钥成为" long"作为使用ssh-keygen
的私钥,因此可以交换它们?如果没有,我该怎么办?
答案 0 :(得分:0)
密钥并不总是可互换的(例如,具有CRT参数的RSA私钥),并且加密过程很可能不会保护密钥免受侧信道攻击。您不应使用私钥加密,期限。
如果您非常小心,可以使用带有邮件恢复功能的签名。
否则 - 如果您有足够的空间 - 您当然可以签署然后加密您的许可证。为了使其工作(没有额外的AES加密),您的加密密钥对必须比签名密钥大很多。