通过查看苹果安全框架中SecKeyEncrypt方法的各种填充值,我可以看出,它不支持带有SHA512散列摘要的OAEP填充。实际上,我似乎无法确定SecKeyEncrypt方法在CBC过程中是否对每个块执行任何类型的散列/掩蔽。
这就是我的问题所在。我的所有其他平台(PHP,Android,.NET)都使用RSA和OAEP填充和一个SHA512摘要。
例如:在C#中,我们可以使用Bouncy城堡的OaepEncoding类,它接受任何摘要,并在分组密码加密过程中执行散列/掩码操作。在php中,phpseclib项目提供了相同的功能。
最后我的问题..。在iOS上是否可以通过使用“手动”散列和使用SecKeyEncrypt的混合方式来实现相同的功能?还是我漏掉了更明显的东西。
干杯!
编辑:我想我可能可以通过移植弹跳城堡代码来散列/屏蔽每个块,然后将新的字节数组传递给SecKeyEncrypt进行加密,但这就引出了一个问题,SecKeyEncrypt是否已经在内部使用了其他散列方法呢?
发布于 2015-02-25 20:15:05
这似乎不可能在iOS的安全框架中实现。我有很多问题得到OAEP RSA加密,以正确地跨平台工作。
然而,我刚刚从第三方库提供者Chillkat那里听说,他们正在增加对此的支持。请参阅:http://www.chilkatforum.com/questions/7778/ios-rsa-encryption-using-oaep-sha512
编辑:我安装了Chilkat的库,并让它在几分钟内工作。
发布于 2019-01-29 01:05:00
从iOS 10.0开始,.rsaEncryptionOAEPSHA512选项已经成为已添加作为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)https://stackoverflow.com/questions/28724696
复制相似问题