我正在看这个答案:
https://stackoverflow.com/a/53807793/1634905
使用椭圆曲线密钥对时,有以下内容:
private let keyType = kSecAttrKeyTypeECSECPrimeRandom // kSecAttrKeyTypeECSECPrimeRandom
private let algorithm = SecKeyAlgorithm.eciesEncryptionCofactorVariableIVX963SHA512AESGCM
private let keySize = 384
algorithm
用于 SecKeyCreateEncryptedData
函数。
这里的
eciesEncryptionCofactorVariableIVX963SHA512AESGCM
是什么?
Apple 的文档没有解释太多:
我看到还有其他可能的选项,例如
eciesEncryptionCofactorVariableIVX963SHA384AESGCM
。为什么这个答案在选择 384 作为 keySize
时却选择了 SHA512 的答案?
eciesEncryptionCofactorVariableIVX963SHA384AESGCM
是一个常量,描述如何使用椭圆曲线密钥来执行加密。
椭圆曲线集成加密方案,一种使用椭圆曲线执行加密的方法
在椭圆曲线计算中使用辅助因子。这增强了安全性
在实际加密步骤中使用 IV(初始化向量),但使该向量非常数(变量)
参考定义这种使用密钥方式的标准 (ANSI X9.63)
这是指执行密钥派生步骤时使用的哈希算法。
用于加密数据的对称算法。
至于为什么 SO 答案使用 SHA-512 而不是 SHA-384,即使密钥大小是 384 位,这可能是随机的、个人偏好或其他任何原因。密钥的大小和密钥派生哈希算法不一定必须相同。