我有一个公钥和一个加密的字符串。我可以使用publickey成功加密。但是当我尝试使用publickey解密时,它失败了。我的意思是当我将公钥传递给 seckeyDecrypt 时,它失败了。
我已经谷歌搜索并发现,默认情况下 kSecAttrCanDecrypt 对于公钥是假的。所以当我导入公钥时,我添加了这个特定的线,
[publicKeyAttr setObject:(id)kCFBooleanTrue forKey:(id)kSecAttrCanDecrypt];
但是没有改善它仍然失败。请有人帮忙。
编辑: Apple的证书,密钥和信托服务说,
kSecAttrCanEncrypt私钥的默认值为false,公钥的默认值为true kSecAttrCanDecrypt私钥的默认值为true,公钥的默认值为false 这意味着,值可以改变吗?我的服务器没有签名(转换为摘要)内容。他们只使用私钥加密,该私钥将在我(在iphone)端解密。这可能吗?。
答案 0 :(得分:3)
asymmetric cryptography的要点是您使用公钥加密并使用私钥解密。
编辑:如果您正在签名和验证,则应使用关联的API。例如,您可以使用kSecAttrCanSign
和kSecAttrCanVerify
检查此功能。