iOS开发常用加密

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的倍数通过补全内容方式进行避免。

对称加密常用的两种加密模式:

  1. ECB(Electronic Code Book):电子密码本模式(每一块数据独立加密)
    最基本的加密模式,也就是通常理解的加密,相同的明文将永远加密成相同的密文,无初始向量,容易受到密码本重放攻击,一般情况下很少用。
  2. 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加密流程。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值