iOS SecKeyEncrypt OAEP SHA512

iOS SecKeyEncrypt OAEP SHA512

据我所知,通过查看 Apple 安全框架中 SecKeyEncrypt 方法的各种填充值,​​它不支持使用 SHA512 哈希摘要的 OAEP 填充。事实上,我似乎无法确定 SecKeyEncrypt 方法是否在 CBC 过程中对每个块执行任何类型的hashing/masking。

这就是我的问题。我的所有其他平台(PHP、Android、.NET)都使用带有 OAEP 填充和 SHA512 摘要的 RSA。

例如:在 C# 中我们可以使用 BouncyCastle 的 OaepEncoding class which accepts any Digest and performs the hash/mask operation during the block cipher encryption process. In php, the phpseclib 项目提供相同的功能。

最后,我的问题是...能否通过某种方式混合使用 "manual" 散列和使用 SecKeyEncrypt,在 iOS 上实现相同的功能?或者我在这里遗漏了更明显的东西。

干杯!

编辑:我想我可以通过移植充气城堡代码然后将新字节数组传递给 SecKeyEncrypt 进行加密来 hash/mask 每个块,但这引出了一个问题,SecKeyEncrypt 是否已经使用了一些其他内部哈希算法?

看来这对于 iOS 的安全框架来说是不可能的。要让 OAEP RSA 加密跨平台正常工作,我遇到了很多问题。

但是,我刚刚从第三方图书馆提供商 Chillkat 那里听说他们正在增加对此的支持。参见:http://www.chilkatforum.com/questions/7778/ios-rsa-encryption-using-oaep-sha512

编辑:我安装了 Chilkat 的库并在几分钟内运行。

从 iOS 10.0 开始,.rsaEncryptionOAEPSHA512 选项已 added 作为 SecKeyAlgorithm

Swift 4

let attributes: [String: Any] = [ ... ]
let pk = SecKeyCreateRandom(attributes as CFDictionary, nil)!
let pub = SecKeyCopyPublicKey(pk)!
let message = "Encrypt me".data(using: .utf8)!

var error: Unmanaged<CFError>?
let cipherText = SecKeyCreateEncryptedData(pub, .rsaEncryptionOAEPSHA512, message as CFData, &error)