Https加密流程详见博主Https加密流程第十条。
其他常用加密方式
一、Base64
Base64加密原理:
1.原本数据一个字符为8bit,每3个字符为一组,即:3*8
2.编码过程中,将二进制数据每6bit分割为一条,最后一条不足6bit时在低位补齐0,每4条一组,即:4*6.。
Base64加密特点:
1.数据加密后,数据量会变大1/3左右。
2.可进行反向解密。
3.编码后末尾有个=号。
二、MD5加密(哈希算法)
MD5加密是最常用的加密方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码。对输入信息生成唯一的128位散列值(32个字符),常用32位16进制来表示。
注意:字符串的转换过程是不可逆的,不能通过加密结果,反向推导出原始内容。MD5主要特点是 不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是绝对的,但基本是不能一样的)。
基本介绍:
需要导入第三方框架: NSString+Hash
特点:
1.压缩性 : 任意长度的数据,算出的 MD5 值长度都是固定的。
2.抗修改性:对原数据进行任何改动,所得到的MD5值都有很大区别。
三、SHA
哈希算法主要适用于数字签名标准里面定义的数字签名算法。
应用:SHA 校验大文件完整性
1.客户端上传文件
上传文件,在请求的body
里面添加该文件的SHA256值来告诉服务器,服务器接收文件完毕后通过检验文件的SHA256值与请求body里面的SHA256值来最终确定本次上否成功。
2.客户端下载文件
下载文件,在响应头里收到了服务器附带的该文件的MD5值,文件下载结束后,通过获取下载后文件的SHA256值与本次请求服务器返回的响应头中的SHA256值做一个比较来最终判断本次下载是否成功。
四、对称加密
简介:加密和解密都使用相同的秘钥。
优点:
1.运算速度快,加密强度高,适合大批量的数据加密。
2.加密解密的速度比较快,适合数据比较长时的使用。缺点:
由于加密与解密的密钥是相同的,如果前后端利用AES进行加密的话,如何保存密钥成了一个非常头疼的问题。
常见对称加密算法:
1,DES
数据加密标准,但由于强度不高,暴力破解难度不是很高,所以用的很少。
2.3DES
使用3个密钥,对数据进行三次加密,强度增强。虽然强度相对DES有所提高,但是对称加密算法密钥的保存就很难,3DES的3个密钥更麻烦,所以3DES也没有被广泛使用。
3.AES加密算法 (广泛应用)
高级密码标准,加密强度非常高,被广泛使用,美国安全局和苹果钥匙串访问都是用了AES加密算法。
简介:
AES又称高级加密标准,是下一代的加密算法标准,速度快,安全级别高,支持128、192、256、512位密钥的加密,其加密和解密的密钥都是同一个。
注意:AES的秘钥是16字节的,待加密的内容必须是16的倍数,如果不是16的倍数通过补全内容方式进行避免。
对称加密常用的两种加密模式:
- ECB(Electronic Code Book):电子密码本模式(每一块数据独立加密)
最基本的加密模式,也就是通常理解的加密,相同的明文将永远加密成相同的密文,无初始向量,容易受到密码本重放攻击,一般情况下很少用。 - CBC(Cipher Block Chaining):密码分组链接模式(使用一个密钥和一个初始化向量[IV]对数据执行加密。每一块数据加密都依赖上一块数据,有效的保证数据的完整性)
明文被加密前要与前面的密文进行异或运算后再加密,因此只要选择不同的初始向量,相同的密文加密后会形成不同的密文,这是目前应用最广泛的模式。CBC加密后的密文是上下文相关的,但明文的错误不会传递到后续分组,但如果一个分组丢失,后面的分组将全部作废(同步错误)。CBC可以有效的保证密文的完整性,如果一个数据块在传递时丢失或改变,后面的数据将无法正常解密。
OpenSSL可演示ECB模式加密
苹果的加密算法也都在CommonCrypto.h这个库里面,苹果内部加密和解密都是用CCCryptorStatus CCCrypt( CCOperation op, CCAlgorithm alg, CCOptions options, const void *key, size_t keyLength, const void *iv, const void *dataIn, size_t dataInLength, void *dataOut, size_t dataOutAvailable, size_t *dataOutMoved),这个函数是对称加密算法的核心函数。
五、非对称加密
简介:加密和解密秘钥不同,一个是公钥一个是私钥。
优点:
1.加密强度小,加密时间长,常用于数字签名和加密秘钥。
2.比对称加密安全。
缺点:
1.加密解密的速度远远低于对称加密算法,因此不适用于数据量较大的情况。
RSA加密算法
简介:RSA加密算法是一种非对称加密算法,密钥为一对公钥和私钥组成。通常把公钥发送给使用方,私钥由接收方自己保存。
优点:
解决了对称加密算法如何保存密钥的问题。
缺点:
由于RSA算法的原理都是大数计算,使得RSA最快的情况也比对称加密算法慢上好几倍。速度一直是RSA的缺陷,一般来说RSA只用于小数据的加密.RSA的速度是对应同样安全级别的对称加密算法的1/1000左右。
非对称加密算法涉及离散函数问题、欧拉函数、欧拉定理等。
RSA加密/生成公钥、秘钥pem文件
过程:在iOS中使用RSA加密解密,需要用到.der
和.p12
后缀格式的文件,其中.der
格式的文件存放的是公钥(Public key)用于加密,.p12
格式的文件存放的是私钥(Private key)用于解密. 首先需要先生成这些文件,然后再将文件导入工程使用。
一、使用openssl生成所需秘钥文件
生成环境是在mac系统下,使用openssl生成,打开终端,按下面这些步骤依次来做。
1.生成模长为1024bit的私钥文件private.pem
2.生成证书请求文件rsaCertReq.csr
3.生成证书rsaCert.crt,并设置有效时间为10年。
4.生成供ios使用的公钥文件 public_key.der
5.生成供ios使用的私钥文件private_key.p12
6.生成供java使用的公钥rsa_public_key.pem
7.生成供java使用的私钥pkcs8_private_key.pem
生成文件目录为:
二、将文件导入工程
三、用网上 RSAEncrypt文件获取证书中秘钥和公钥进行加密和解密操作。
六、AES+RSA混合加密
实际应用:参考Https加密流程。