常见加解密算法详解

本文主要介绍移动端的加解密算法的分类、其优缺点特性及应用,帮助读者由浅入深地了解和选择加解密算法。文中会包含算法的关键代码,以利于读者理解使用。

算法分类

根据加密结果是否可以被解密,算法可以分为可逆加密和不可逆加密(单向加密),从这个意义上来说,单向加密只能称之为加密算法而不是加解密算法。对于可逆加密,又可以根据密钥的的对称性分为对称加密和非对称加密。具体的分类结构如下:

  • 可逆加密
  • 对称加密:DES,3DES,AES,PBE
  • 非对称加密:RSA,DSA,ECC
  • 不可逆加密(单向加密):MD5,SHA,HMAC

密钥介绍

在详细介绍各种加解密算法之前,我们需要对“密钥”这一概念做一下简单介绍,方便我们对下面内容的展开。

密钥在加解密算法中是一个参数,其长度根据不同的算法有所不同,同一算法的密钥长度也有可能有不同的要求。一般来说,密钥的长度与安全性成正比。在使用时,将明文(或密文)连同密钥放入相应的加密(或解密容器),即可得到密文(或明文),实现加解密。

在加密算法诞生之初,密钥的形式为对称的,这是说,加密与解密的密钥是相同的。这样是符合我们的思维习惯的。但是,这里存在一个问题,就是密钥在传递或保存的过程中如果被窃取,那么黑客是很容易将密文解密获得正确的明文的。对称形式的密钥虽然简单高效,但是安全性不高。

鉴于对称密钥的缺陷,人们又提出了一种新的密钥形式,非对称密钥。非对称密钥的加解密密钥不再相同,而是分为公钥和私钥,公钥用于加密,私钥用于解密。私钥是不公开不传送的,仅仅由通信双方持有保留;而公钥是可以公开传送的,甚至不担心丢失,因为即便公钥被窃取,黑客还是无法将密文解密为明文(这一功能由私钥提供)。可以看到,非对称密钥的安全性较对称密钥是更好的。

非对称密钥还提供一种功能,即数字签名。通过私钥进行签名,公钥进行认证,达到身份认证的目的。

需要说明的是,上面对于密钥的介绍均是基于可逆加密,对于不可逆加密,是不存在密钥概念的。

模式介绍

在详细介绍各种加解密算法之前,我们需要对“模式”这一概念做一下简单介绍,方便我们对下面内容的展开。

对于可逆加密,在加密时可以选择加密模式,可以理解为加密算法可以有不同的工作方式,不同的工作方式之间存在效率、方式等方面的区别。要注意的是,对同一个数据,加密选择的模式与解密选择的模式必须相同,否则解密得不到正确的结果。

Android可逆加密的模式主要有四种:ECB (电子密码本模式)、CBC(分组连接模式)、CFB(密码反馈模式)、OFB (输出反馈模式)。

ECB (电子密码本模式):

其使用方式是一个明文分组加密成一个密文分组,相同的明文分组永远被加密成相同的密文分组。直接利用加密算法分别对每个64位明文分组使用相同的64位密钥进行加密。每个明文分组的处理是相互独立的。

缺点:在给定密钥k 下,同一明文组总是产生同一密文组,这会暴露明文组的数据格式。某些明文的数据格式会使得明文组有大量的重复或较长的零串,一些重要的数据常常会在同一位置出现,特别是格式化的报头、作业号、发报时间、地点等特征都将被泄露到密文之中,使攻击者可以利用这些特征。

优点:用同个密钥加密的单独消息,其结果是没有错误传播。实际上,每一个分组可被看作是用同一个密钥加密的单独消息。密文中数据出了错,解密时,会使得相对应的整个明文分组解密错误,但它不会影响其他明文。然而,如果密文中偶尔丢失或添加一些数据位,那么整个密文序列将不能正确的解密。除非有某帧结构能够重新排列分组的边界。

CBC(分组连接模式):

对于相同的明文,加密结果不同。这就加大了密码破解者的破译难度。在密钥固定不变的情况下,改变每个明文组输入的链接技术,这样, 密文组不仅与当前的明文组有关,而且通过反馈的作用还与以前的明文组有关。这从密码学的本质上来说是一种混淆操作。

优点:能隐蔽明文的数据模式; 在某种程度上能防止数据篡改, 诸如明文组的重放,嵌入和删除等.

缺点:会出现错误传播(errorpropagation). 密文中任一位发生变化会涉及后面一些密文组. 但CBC 模式的错误传播不大, 一个传输错误至多影响两个消息组的接收结果,错误传播最多持续2个分组

CFB(密码反馈模式):
  采用密文反馈的模式增强密文之间的相关性。若待加密的消息必须按字符比特处理时,可采用CFB。每次加密s bit 明文。(1<= s<= 原来的固有长度)

优点:CFB 模式除有CBC 模式的优点外, 其自身独特的优点是它特别适用于用户数据格式的需要。

缺点:一是对信道错误较敏感且会造成错误传播。CFB由于采用的是密文反馈,故若某个密文分组在传输中出现一位或多位的错误,将会引起当前分组和后续部分分组的解密错误。二是数据加密的速率降低。但这种模式多用于数据网中较低层次, 其数据速率都不太高。

OFB (输出反馈模式):
  克服了CBC和CFB模式带来的错误传播问题,但对密文被篡改难于进行检测

算法介绍

单向加密

前面说过,单向加密的结果是不可以被解密的,因此,单向加密的主要用途并不是传统意义上的加解密工作,而是对明文数据的保密和摘要提取。单向加密主要有MD5、SHA、HMAC等算法。

特点

1. 压缩性:任意长度的数据,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值