对称数据加密技术

37 篇文章 0 订阅
13 篇文章 0 订阅

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

特点

对称加密算法有20多种,对称加密算法有如下特点:

  • 加密和解密密钥是一致的;
  • 安全程度依赖于密钥长度;
  • 每种算法对密钥的长度是有一定要求的;
  • 大部分是分组加密算法,所以算法需要指定工作模式、填充类型。

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

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

  • 1.将要加密的数据进行分组,按照N位为一组这就是分组过程,也就是分组加密的由来;
  • 2.以组为单位进行加密处理,这个时候对每块的加密操作就有了不同的工作模式
    • 不同的工作模式算法效率和产生的密文差别比较大;
  • 3.最后一块儿不足N位,则需要填充到N位,这就是填充模式
    • 不同的填充模式,影响到数据的安全性;

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

  • 密钥:不是随意指定的,是需要计算机计算出来的;
  • 算法:选择哪种算法极大程度的决定了加密安全级别;
  • 工作模式:算法的工作模式决定了算法的效率和算法安全性;
  • 填充模式:使用哪种填充方式,能一定程度上干扰数据的破译工作;

1.密钥长度

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

2.工作模式

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

  • ECB:电子密码本,最基本、最易理解的工作模式,每次加密都产生独立的密码组,每组的加密结果不影响,相同的组产生的密文相同;
    • 优点:易于理解,简单一些,没有误差传递,便于实现并行操作;
    • 缺点:不能因此明文模式,有规律可寻
    • 用途:时候加密码密码,随机数,也就是明文重复小的数据;
  • CBC:密文链接模式,目前应用最广泛的模式,每组之间互相影响,加密前,明文数据与前一组的密文进行异或运算,需要选择初始化向量;
    • 优点:加密后的密文上下文关联,不会有重复密文,攻击性低;
    • 缺点:加密效率低,不利于并行计算,有误差传递问题。
    • 用途:可加密任意长度的数据。
  • CFB:密文反馈模式,比较复杂,也是上下文关联的,按8位分组将密文和明文进行异或运算;
    • 优点:隐藏了明文模式,可以按字节诸葛进行加解密;
    • 缺点:不利于并行计算,错误会扩散,需要初始化向量;
    • 用途:可用于检测发现密文的篡改。
  • OFB:输出反馈模式,和CFB类似,不过OFB用前N位密码进行异或运算;
    • 优点:隐藏明文模式,无误差传递;
    • 缺点:不利于并行计算;比CFB安全性差;
    • 用途:使用与加密冗余性较大的数据,比如语言、图像数据。
  • CRT:计数模式,AES中经常使用CRT和CBC模式,上下文无关联的;
    • 优点:可并行计算,与CBC模式一样的安全性;
    • 缺点:没有错误传播,不易确保数据的完整性;
    • 用途:各种加密用途。

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

3.填充模式

DES的分组过程中,最后一块儿不足56位的时候,需要对最后一块进行填充,这个时候就用到了填充模式:

  • NoPadding:不填充;
  • PKCS5Padding:常用的填充模式。

应用

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

算法家族

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

  • DES:数据加密标准,经典加密算法,由IBM创建提交给美国国家标准局,是对称加密算法的基础;
  • DESede:俗称3DES,又称Triple DES,是对DES的改良,采用多重迭代的方式加密;
  • AES:DES的替代者,更安全,密钥设置快,效率高,支持的密钥长(128、192、256);
  • PBE:基于口令的加密,算是对称加密的特例,属于信息摘要算法和对称加密算法的融合;
  • IDEA:国际数据加密标准,这是脱离了美国政府的限定产生的标准,强加密算法,常用在电子邮件加密中,比如PGP的核心算法。
  • 其他:Blowfish、Twofish、Serpent、IDEA

算法供应商

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

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

算法选择

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值