一、信息摘要算法5:MD5
1.系统库位置:<CommonCrypto/CommonHMAC.h>。
2.非加密算法,属于哈希散列,不可逆,用于检验数据完整性。
1.包含的散列算法:SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512。
2.系统库位置:<CommonCrypto/CommonHMAC.h>。
3.SHA同样是散列算法,非加密算法。SHA基于MD5实现。
三、对称加密:
1.包含的加密算法:DES、3DES、AES、AES128等。
2.系统库位置:<CommonCrypto/CommonCryptor.h>的CCCrypt方法
四、非对称加密:
1.包含的加密算法:RSA
2.系统库位置:Security框架,主要有四个方法:
(1)SecKeyEncrypt:使用公钥对明文加密。
(2)SecKeyDecrypt:使用私钥对密文解密。
(3)SecKeyRawSign:使用私钥对明文加签,生成数字签名。
(4)SecKeyRawVerify:使用公钥对明文和数字签名验签,返回0代表验签通过。
3.通常用法:加密和解密用来保证数据安全,加签和验签用来防篡改。通常结合在一起使,步骤如下:
(1)发起方使用接收方的公钥对明文加密,生成密文。
(2)发起方使用自己的私钥对明文加签,生成数字签名。
(3)接收方使用自己的私钥对密文解密,得到明文。
(4)接收方使用发起方的公钥对明文和数字签名验签,检测是否是发起方发起的请求。
4.证书格式:DER、PEM、P12是生成密钥可选择的文件格式。
(1)DER是Distinguished Encoding Rules的简称,是一种信息传输语法规则。
在iOS端,我们的公钥使用的是DER格式的文件,可以从SecCertificateCreateWithData函数的data参数的说明中看到。
(2)P12用于存放个人证书/私钥,他通常包含保护密码,2进制方式。
在iOS端,我们的私钥使用的是P12格式的文件,可以从SecPKCS12Import函数的pkcs12_data参数说明看到。
(3)而PEM格式是一种对DER进行封装的格式,他只是把der的内容进行了base64编码并加上了头尾说明。
(4)OPENSSL命令行默认输出的都是PEM格式的文件,要能够在iOS下使用,我们需要指定使用DER或者先生成PEM然后转换成DER。P12格式也一样。
(2)3可以理解为私钥加密。
(3)4中隐含公钥解密过程。首先将数字签名解密,然后和明文的SHA1值对比,看是否一致。