常见加密算法

常见的加密算法可以分成三类:对称加密算法,非对称加密算法和Hash加密算法

  • 对称加密算法的加密与解密 密钥相同

  • 非对称加密算法的加密密钥与解密 密钥不同

  • Hash加密 不需要密钥,是一种单向算法

加密与解密

加密:对原来为 明文 的文件或数据按 某种算法 进行处理,使其成为 不可读 的一段代码,通常称为 “密文”

解密:加密逆过程 ,即将该 密文 转化为其 原来数据 的过程。

对称加密

优点:算法公开、计算量小、加密速度和效率高

缺点:密钥单一、密钥管理困难

常见对称加密算法:DES、3DES、AES、Blowfish

  • DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。

  • 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次DES加密,强度更高。

  • AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。

  • Blowfish:是一个64位分组及可变密钥长度的对称密钥分组密码算法,可用来加密64比特长度的字符串。

DES

DES 加密算法是一种 分组密码,以 64 位为 分组对数据 加密,它的 密钥长度56 位,加密解密同一算法

DES 加密算法是对 密钥 进行保密,而 公开算法,包括加密和解密算法。这样,只有掌握了和发送方 相同密钥 的人才能解读由 DES加密算法加密的密文数据。因此,破译 DES 加密算法实际上就是 搜索密钥的编码。对于 56 位长度的 密钥 来说,如果用 穷举法 来进行搜索的话,其运算次数为 2 ^ 56 次。

3DES

是基于 DES对称算法,对 一块数据三个不同的密钥 进行 三次加密强度更高

AES

AES 加密算法是密码学中的 高级加密标准,该加密算法采用 对称分组密码体制,密钥长度的最少支持为 128 位、 192 位、256 位,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的 区块加密标准

AES 本身就是为了取代 DES 的,AES 具有更好的 安全性效率灵活性

Blowfish

Blowfish算法是一种对称的分组加密算法,算法核心在于子密钥生成,它将变长密钥扩展成总长4168 Byte的子密钥数组。算法中使用了大量的子密钥,而子密钥又依赖于用户密钥,实际加/解密过程中使用的是更新后的子密钥数组,子密钥即P数组和S盒。Blowfish算法有一个核心加密函数:BF_En(),该函数的输人是64位明文信息,经过运算,以64位密文信息的形式输出。用Blowfish算法加密信息,需要两个过程:密钥预处理和信息加密。同样,解密亦需要两个过程,密钥预处理和信息解密。

Blowfish算法的源密钥——pbox和sbox是固定的,而我们要加密一个信息,需要自己选择一个key,用这个key对pbox和sbox进行变换,得到下一步信息加密所要用的key_pbox和key_sbox。解密亦是如此,由于Blowfish是对称加密算法,解密方在得到key后根据key生成解密所需的key_box和key_sbox。对同一个信息加密解密,选取的key的不同会导致密文的不同。因此,Blowfish算法的关键在于key的选择以及保密。

非对称加密

加密与解密特点:

  1. 如果使用 公钥 对数据 进行加密,只有用对应的 私钥 才能 进行解密

  2. 如果使用 私钥 对数据 进行加密,只有用对应的 公钥 才能 进行解密

常见非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

  • RSA:基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,可用于加密,也能用于签名。

  • DSA:数字签名算法,仅能用于签名,不能用于加解密。

  • ECC:椭圆曲线密码编码学。

  • ELGamal:利用离散对数的原理对数据进行加解密或数据签名,其速度是最慢的。

RSA

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

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

DSA

处理过程: (采用双重加密)

(1)使用SHA编码将发送文件加密产生128bit的数字摘要;

(2)发送方用自己的专用密钥对摘要再加密,形成数字签名;

(3)将原文和加密的摘要同时传给对方;

(4)接受方用发送方的公共密钥对摘要解密,同时对收到的文件用SHA编码加密产生同一摘要;

(5)将解密后的摘要和收到的文件在接受方重新加密产生的摘要相互对比,如果两者一致,则说明在传送过程中信息没有破坏和篡改。否则,则说明信息已经失去安全性和保密性。

ECC

ECC 也是一种 非对称加密算法,主要优势是在某些情况下,它比其他的方法使用 更小的密钥,比如 RSA 加密算法,提供 相当的或更高等级 的安全级别。不过一个缺点是 加密和解密操作 的实现比其他机制 时间长 (相比 RSA 算法,该算法对 CPU 消耗严重)。

ELGamal

Hash加密

Hash算法是一种单向算法,通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。

常见的Hash算法:SHA-1、MD5、HMAC

  • MD5:对一段信息产生 消息摘要,输出长度为 128bits 的一个串

  • SHA-1:对于长度小于 2 ^ 64 位的消息,SHA1 会产生一个 160 位的 消息摘要

  • HMAC:运算利用 哈希算法 (MD5SHA1 等),以 一个密钥一个消息 为输入,生成一个 消息摘要 作为 输出

MD5

MD5 用的是 哈希函数,它的典型应用是对一段信息产生 信息摘要,以 防止被篡改。严格来说,MD5 不是一种 加密算法 而是 摘要算法。无论是多长的输入,MD5 都会输出长度为 128bits 的一个串 (通常用 16 进制 表示为 32 个字符)。

SHA-1

SHA1 是和 MD5 一样流行的 消息摘要算法,然而 SHA1MD5安全性更强。对于长度小于 2 ^ 64 位的消息,SHA1 会产生一个 160 位的 消息摘要。基于 MD5SHA1 的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查 文件完整性 以及 数字签名 等场景。

HMAC

HMAC 是密钥相关的 哈希运算消息认证码(Hash-based Message Authentication Code),HMAC 运算利用 哈希算法 (MD5SHA1 等),以 一个密钥一个消息 为输入,生成一个 消息摘要 作为 输出

HMAC 发送方接收方 都有的 key 进行计算,而没有这把 key 的第三方,则是 无法计算 出正确的 散列值的,这样就可以 防止数据被篡改

加密算法比较

加密算法密钥管理安全性加密速度应用
对称算法快几个数量级大数据量加解密
非对称算法容易小数据量加解密

散列算法比较

名称安全性速度
SHA-1
MD5

对称加密算法比较

名称密钥名称运行速度安全性资源消耗
DES56位较快
3DES112位或168位
AES128、192、256位

非对称加密算法比较

名称成熟度安全性运算速度资源消耗
RSA
ECC

转载于:https://juejin.im/post/5cfa1ff8e51d45105e02128b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值