Skip to the content.

介绍

iOS开发中经常会用到加密方面的知识,比如在用户注册、接口中数据获取、真机调试证书、发布证书等方面,今天就好好梳理一下。

常用的概念

跟加密有关的名词:对称加密、公钥密码(非对称加密)、密钥、MD4、MD5、SHA、数字签名、证书等这些概念

名词解释

为啥需要加密呢?

加密解密:为了防止窃听,所以有了加密。对称加密和公钥解密是常用的加密方式。比如发送者把聊天明文内容“我爱你”加密成密文“89jkjl3k”,如果有人窃听拿到“89jkjl3k”这串内容也不知道是啥意思。接受者根据对应的加密方式对密文进行解密就会得到明文“我爱你”

密钥
加密可以理解成就是把一张纸条放到盒子里并加了把锁,纸条上的文字就是明文,盒子就是密文,钥匙密钥。用密钥解密密文就是用钥匙打开锁拿出纸条
对称加密
加密和解密用的是同一个密钥,常用的加密算法是DES,AES
公钥加密(非对称加密)
加密和解密用的是不同的密钥,常用的算法是RSA
什么是单向散列函数?
单向散列函数,可以根据根据消息内容计算出散列值,且散列值的长度和消息的长度无关,无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值。但是根绝散列值却无法回退出消息内容。

常用的有MD4、MD5:产生128bit的散列值,目前已经不安全

SHA-1:产生160bit的散列值,目前已经不安全

SHA-2:SHA-256、SHA-384、SHA-512,散列值长度分别是256bit、384bit、512bit,目前比较完全

SHA-3:全新标准,目前还没有普及

单向散列函数在加密领域的应用?
根据其不可逆性,可以验证数据有没有被篡改。
什么是数字签名
消息发送者的私钥进行签名,消息接收者用公钥验证签名

数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改。数字签名的作用:确认消息的完整性,识别消息是否被篡改,防止消息发送人否认

数字签名无法解决的问题

如果遭遇中间人攻击,那么公钥将是伪造的,数字签名将失效,所以验证签名之前,首先得验证公钥的合法性。如果验证公钥的合法性呢?使用证书

证书:密码学中的证书,全称叫做公钥证书
里面包含姓名、邮箱等个人信息,以及此人的公钥。并有认证机构CA施加数字签名

CA就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织