【问题标题】:Decryption with the public key in iphone用iphone中的公钥解密
【发布时间】:2010-12-29 17:23:49
【问题描述】:

我有一个公钥和一个加密字符串。我可以成功地使用公钥加密。但是当我尝试使用公钥解密时它失败了。我的意思是当我将公钥传递给 seckeyDecrypt 时,它会失败。

我用谷歌搜索发现,默认情况下 kSecAttrCanDecrypt 对于公钥是错误的。所以当我导入公钥时,我已经添加了这个特定的行, [publicKeyAttr setObject:(id)kCFBooleanTrue forKey:(id)kSecAttrCanDecrypt];

但是没有改进它仍然失败。请有人帮忙。

编辑: 苹果的证书、密钥和信任服务说,

kSecAttrCanEncrypt 私钥默认为 false,公钥默认为 true。
kSecAttrCanDecrypt 私钥默认为 true,公钥为 false。
这意味着,可以更改值吗?我的服务器没有签署(转换为摘要)内容。他们只是使用要在我(在 iphone 中)端解密的私钥进行加密。这可能吗?

【问题讨论】:

    标签: iphone rsa


    【解决方案1】:

    asymmetric cryptography的重点是你用公钥加密,用私钥解密。

    编辑:如果您正在签名和验证,您应该使用相关的 API。例如,您可以使用kSecAttrCanSignkSecAttrCanVerify 来检查此功能。

    【讨论】:

    • 感谢您的回复。我的意思是我需要相反的部分。 # 一种签名算法,给定消息和私钥,生成签名。 # 一种签名验证算法,给定消息、公钥和签名,接受或拒绝消息的真实性声明。
    • Vignesh,使用对应的private密钥来解密密文。或者,不要。直接在数据上使用公钥加密并不安全——请仅使用公钥加密来加密随机会话密钥(用于对称密码的密钥)或签署消息摘要哈希。
    • @sarnoid,如果您只需要保密,您可以直接加密数据。这样做不仅仅是因为它效率低下。
    • 感谢回复。但是 kSecAttrCanDecrypt 有什么用?想知道。再次感谢您。
    • @vignesh,我认为这是对您进行加密/解密(而不是签名/验证)时的检查。
    猜你喜欢
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    相关资源
    最近更新 更多