在 iOS 上使用私钥加密数据

Posted

技术标签:

【中文标题】在 iOS 上使用私钥加密数据【英文标题】:Encrypting data with a private key on iOS 【发布时间】:2011-07-15 10:51:30 【问题描述】:

我在“证书、密钥和信任服务编程指南”中找到了有关使用公钥加密数据的示例。但是如何使用私钥加密并使用公钥解密?我找不到任何关于它的样本。提前致谢

【问题讨论】:

看起来无法使用私钥进行加密。SecKeyEncrypt 不支持私钥作为输入参数,这很奇怪。有人可以建议提供该功能的优秀第三方 API 吗? 找到了!我一直在寻找加密,但实际上它正在签名。所以我会使用这个:SecKeyRawSign (Generates a digital signature for a block of data) OSStatus SecKeyRawSign (SecKeyRef key, SecPadding padding, const uint8_t *dataToSign, size_t dataToSignLen, uint8_t *sig, size_t *sigLen); 【参考方案1】:

你为什么用私钥加密?当您使用私钥加密时,这被认为是签名不加密,因为它不提供机密性。如果您想使用私钥“加密”,请查看数据签名,这应该允许您使用私钥“加密”(读取“签名”)并使用公众“解密”(读取“验证签名”)键。

【讨论】:

是的,我的意思是使用私钥签名,但我找不到使用 SecKeyEncrypt 的方法。 为什么使用 Cocoa API 无法使用私钥签名?这真的很奇怪.. 有可能,只是不要使用SecKeyEncrypt,这是为了加密(如文档中所解释的那样 - 它还指出此函数需要一个公钥作为其参数),但使用SecKeyRawSign,即签名(并期望私钥作为其参数)。如果您的目标是签名而不是加密,请不要使用函数加密;)

以上是关于在 iOS 上使用私钥加密数据的主要内容,如果未能解决你的问题,请参考以下文章

iOS RSA加密生成公钥私钥

在 ios 上使用不受信任的证书加密数据

iOS加密:RSA

iOS常用加密之RSA加密解密

AI学习吧-公钥私钥沙箱环境

请问SSL加密的公钥和私钥区别