常用加密算法简介

之前我们说过了iOS中相对比较安全的存储用户数据方式KeyChain但是实际上,如果在将数据存入KeyChain中时,如果使用加密后的密文存储,会比直接明文存储更加安全。但是加密的方式都有哪些?又要怎么样来选择加密的算法呢?这篇文章先简单介绍一下常用的加密算法都有哪些。

常见的加密算法可以分成三种:

  • 对称加密算法;
  • 非对称加密算法;
  • Hash算法;

接下来我们就来看看这些算法。

对称加密算法

logo

对称加密算法,如其名,就是使用同一个秘钥进行加密和解密。

优点是速度较快,适合对数据量比较大的数据进行加密。

缺点是密钥的保存方式需要保证,一旦加密或者解密的哪一方泄漏了密钥,都会导致信息的泄漏。

常用的对称加密算法有:DES3DESDESXBlowfishIDEARC4RC5RC6AES

DES

DES加密算法是一种分组加密算法,以64位为分组对数据进行加密,他的密钥长度为56位,速度较快,适合用于大量数据加密的场合。

3DES

基于DES加密,对一块数据使用三个不同的密钥进行加密三次,强度更高。

AES

高级加密标准,是新一代加密算法标准,取代DES,速度快,安全级别高。密钥长度最少支持128、192、256,分租长度128位。

非对称加密

logo

与对称加密相对的,非对称加密需要两个密钥,一个公开密钥(Public Key),一个私有密钥(Private Key)。公钥和私钥是一对,如果使用公钥进行加密的数据,只有对应的私钥才能解密。相对的,如果是使用私钥加密的数据,只有对应的公钥才能解密。

优点是公钥可以被任何人知道,而公钥的泄漏也不会导致信息泄漏,但是一旦私钥泄漏了就会导致信息泄漏。

常用的非对称加密算法有:RSAECC(移动设备用)Diffie-HellmanEl GamalDSA(数字签名用)

RSA

RSA加密算法是目前最有影响力的公钥加密算法,并且被普遍任务是最优秀的公钥方案之一。RSA是第一个能同时加密和数字签名的算法,它能够抵抗到目前为止已知的所有密码攻击。

RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是如果想要对其进行因式分解却极其困难,因此可以将乘积公开作为密钥。

ECC

ECC使用的是椭圆曲线编码学,相对于RSA,ECC的抗攻击性更强,并且计算量小,处理速度快,存储空间占用小,所以适用于移动设备使用。

Hash算法

logo

Hash算法(哈希散列算法)特别之处在于它是一种单向算法,即不可逆,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,但是却不能通过这个Hash值重新获得目标信息。

因为此特点,Hash算法通常用在存储不可还原的密码存储,信息完整校验等地方。

常用的Hash算法有:MD2MD4MD5HAVALSHASHA-1HMACHMAC-MD5HMAC-SHA1

MD5

MD5加密算法可以简单的分析为以512位分组来处理输入的信息,且每一个分组又被划分为16个32位的子分组,经过一系列的处理之后,算法的输出由4个32位分组组成,将这4个32位分组级联后就会生成一个128位散列值。

MD5大多被用于软件的密码认证和钥匙识别上。

SHA1

SHA1和MD5一样是流行的信息摘要算法。对于长度小于2’64位的消息,SHA1会生成一个160位的信息摘要,当接收到消息的时候,这个消息摘要可以用来验证数据的完整性,在传输的过程中,数据很可能发生变化,那么这时候就会生成不同的信息摘要。SHA1不可以从消息摘要中复原信息,而两个不同的消息不会产生同样的信息摘要。这样,SHA1就可以用来验证数据的完整性。

算法对比

名称 密钥长度 运算速度 安全性 资源消耗 加密类型
DES 56位 较快 对称加密
3DES 168位 对称加密
IDEA 128位 较慢 对称加密
AES 128、192、256位 对称加密
RSA 1024、2048、3072、4096位 非对称加密
DSA 1024、2048、3072、4096位 非对称加密
ECC 256 非对称加密
SHA-1 Hash加密
MD5 Hash加密

算法选择

对称加密的算法相较于非对称加密算法会快很多,如果需要对大量的数据进行加密时,建议采用对称加密算法,加快加密解密速度。

而对于需要签名的情况,只能使用非对称加密。

当数据量很小,而密钥的管理用来决定数据安全时,最好使用非对称加密。

在选定了算法之后,选择多少位的密钥也是一个难题,一般情况下,密钥越长,运行的速度越慢,所以我们要根据实际需要选择加密的位数,一般来说,RSA采用1024位ECC采用160位AES采用128位

参考文档

常用加密算法概述

常用加密算法探寻