2.1 对称加密技术简介

2018-11-29  本文已影响0人  saillen

对称数据加密技术简介

对称数据加密技术是当前应用最广泛、使用频率最高的加密技术,对称加密算法是双向可逆的,加密密钥和解密密钥相同是最大的特点。对称加密算法由古典加密算法演变而来,大部分加密算法的解密算法是逆运算。

特点

对称加密算法家族有20多个成员,主要特点:

一般对称加密算法的加密流程

一般对称加密算法的加密流程大概如下:

由上可知,对称加密算法中,非常重要的几个概念如下:

1.密钥长度

对称加密算法的安全程度依赖于密钥长度,而密钥长度不是说变就变得,这需要算法能支持。密钥长度越长则加密级别越高,数据内容越安全,例如:JAVA仅仅支持56位长度的DES加密。

2.工作模式

加密算法应用的场景比较复杂,有的强调效率,有的强调安全,有的强调容错,这就出现了不同的工作模式。<font color = 'red'>根据加密时每个密码块儿之间的关联方式分为:</font>

一般如果数据重复性不高选择CBC模式,重复性高选择CFB或者OFB模式,AES算法经常用CRT模式。

3.填充模式

分组加密过程中,最后一块经常不满足要求的位数,这个时候就需要使用填充模式,将最后一块填充到满足需求的位数,
例如,DES的分组过程中,最后一块儿不足56位时,需要对最后一块进行填充,将最后一块填充至56位。常用的填充模式主要有如下两种:

应用

对称加密算法广泛的应用在各种需要数据加密的场景下,如很多Token的生成都采用这种加密手段加密数据内容。只要需要加密的地方可以优先考虑使用对称加密技术。

NOTE:对称加密算法在加密内容较大时效率也可满足需求,所以通常情况下应该优先考虑使用对称加密,其缺点很明显:密钥泄露则数据会变得极不安全

算法家族

目前Java中支持的对称加密算法大约有20多种,比较有代表性的算法有5种:

算法供应商

信息摘要算法很多受美国出口的限制,对称加密算法更是如此,尤其是能支持长密钥加密的对称加密算法,JDK仅支持一些密钥长度比较短的加密算法,如56位密钥的DES,112位的3DES,128位的AES。

对于高级的加密算法,可以考虑使用Bouncy Castle的开源Jar包。

算法选择

目前DES已经不安全了,优先考虑使用AES加密,IDEA要根据自己的场景考虑,不建议一般应用,PBE要看和哪种算法融合。

算法流程简图

graph TD
A[输入数据] -->|读取前N位| B(判断填充)
B --> C(分组过程)
C --> D(是否组间关联)
D --> A
上一篇下一篇

猜你喜欢

热点阅读