APP下载

对称加密算法分析及用Java实现

2017-10-21裴宏韬孙建言盖红玉李稳

电脑知识与技术 2017年18期
关键词:明文加密算法密文

裴宏韬 孙建言 盖红玉 李稳

摘要:对称密码算法是当今应用范围最广,使用频率最高的加密算法。它不仅应用于软件行业,在硬件行业同样流行。各种基础设施凡是涉及安全需求,都会优先考虑对称加密算法。

关键词:对称加密算法;DES;3DES;AES

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2017)18-0046-02

1概述

随着数据加密技术的发展,现代密码技术主要分为对称加密技术和非对称加密技术。如果在一个密码体系中,加密密钥和解密密钥相同,就称为对称密钥。现代加密技术阶段,加密和解密算法是公开的,数据的安全性完全取决于密钥的安全性,因此,对称加密体系中如果密钥丢失,数据将不再安全。

2对称式加密算法简述

2.1代表性算法

1)DES

DES(Data EncryptionStandard,数据加密标准)是美国国家标准局研究的除国防部以外的其他部门的计算机系统的数据加密标准。DES是一种单密钥密码算法,它是一种典型的按分组方式工作的密码,是两种基本密码块替代和换位的细致而复杂的结构,通过反复一次应用这两项技术来提高起强度,经过总共16轮的替换和换位变换后,使得密码分析者无法获得该算法的一般特性以外的更多的信息。

算法思想:DES算法将输入的明文分为64位的数据分组,使用64位密钥进行变化,每个64为明文分组数据经过初始置换、16次迭代和逆初始置换的3个主要阶段,最后输出得到64为密文。

2)三重DES

DES算法现在难以提供足够的安全性,因其有效密钥只有56位。后来又提出了三重DES(或称3DES),该方法的强度大约和112比特的密钥强度相当。这种方法用两个密钥对明文进行3次运算。

3)AES

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。AES汇聚了高安全性、高性能、高效率、易用和灵活等优点,它设计思想简单,并兼顾了速度和代码大小以适应各种平台的需求。AES设计有三种密钥长度,相比较而言,AES的128位密钥比DES的58位密钥要强得多。

2.2算法比较

对称密码算法的加密密钥和解密密钥相同,对于大多数对称密码算法,加解密过程互逆。

1)加解密通信模型,如图1所示。

2)特点:算法公开、计算量小、加密速度快、加密效率高。

3)弱点:双方都使用同样密钥,安全性得不到保证。

对称密码有流密码和分组密码两种,但是现在普遍使用的是分组密码:

4)分组密码工作模式

(1)ECB:电子密码本(最常用的,每次加密均产生独立的密文分组,并且对其他的密文分组不会产生影响,也就是相同的明文加密后产生相同的密文)。

(2)CBC:密文链接(常用的,明文加密前需要先和前面的密文进行异或运算,也就是相同的明文加密后产生不同的密文)。

除了这两种常用的工作模式,还有:

(3)CFB:密文反馈。

(4)OFB:输出反馈。

f5)CTR:计数器。

这五种工作模式主要是密码学中算法在进行推导演算的时候所应用到的。

5)分组密码填充方式

(1)NoPadding:无填充。

(2)PKCS5Padding:填充的原则是,如果长度少于16个字节,需要补满16个字节,补(16-len)个(16-len)例如:huguozhen这个节符串是9个字节,16-9=7,补满后如:huguozhen+7个十进制的7。如果字符串长度正好是16字节,则需要再补16个字节的十进制的16。在PKCS5Padding中,明确定义Block的大小是8位。

(3)ISO10126Padding。

三种常用的对称密码的填充方式如表1所示。

3算法的Java实现

3.1 DES算法

(1)生成密钥:

KeyGenerator keyGen=KeyGenerator.getlnstance("DES");∥密钥生成器

keyGen.init(56);∥初始化密钥生成器

SecretKey secretKey=keyGen.generateKey0;∥生成密钥

byte[]key=secretKey.getEncoded();∥密钥字节数组

f21DES加密:

SecretKey secretKey=new SecretKeySpec(key,"DES");∥恢复密钥

Cipher cipher=Cipher.getInstance("DES");∥Cipher完成加密或解密工作类

cipher.init(Cipher.ENCRYPT_MODE,secretKey);∥对Cipher初始化,加密模式

bytel[]cipherByte=cipher.doFinal(data);∥加密data

(3)DES解密:

SecretKey secretKey=new SecretKeySpec(key,"DES");∥恢复密钥

Cipher cipher=Cipher.getlnstance("DES");HCipher完成加密或解密工作类

cipher.init(Cipher.DECRYPT_MODE,secretKey);∥对 Cipher初始化,解密模式

byte[]cipherByte=cipher.doFinal(data);∥解密data

3.2 AlES算法实现

AES算法是高级数据加密标准,能够有效抵御已知的针对DES算法的所有攻击。密钥建立时间短、灵敏性好、内存需求低、安全性高。推荐使用。

1)生成密钥:

KeyGenerator keyGen=KeyGenerator.getInstance("AES");∥密钥生成器

keygen.init(128);∥默认128,获得无政策权限后可为192或256

SecretKey secretKey=keyGen.generateKey();∥生成密钥

byte[]key=secretKey.getEncoded0();∥密钥字节数组

2)AES加密:

SecretKey secretKey=new SecretKeySpec(key,"AES");∥恢复密钥

Cipher cipher=Cipher.getlnstance("AES");∥Cipher完成加密或解密工作类

cipher.init(Cipher.ENCRYPT_MODE,secretKey);∥对Cipher初始化,解密模式

byte[]cipherByte=cipher.doFinal(data);∥加密data

3)AES解密:

SecretKey secretKey=new SecretKeySpec(key,"AES");∥恢复密钥

Cipher cipher=Cipher.getInstance("AES");∥Cipher完成加密或解密工作類

cipher.init(Cipher.DECRYPT_MODE,secretKey);∥对 Cipher初始化,解密模式

byte[]cipherByte=cipher.doFinal(data);∥解密data

4结束语

对称加密算法在密码学中有重要的意义,在保密实践中具有非常重要的实际意义,目前仍然是密码学研究的重点。endprint

猜你喜欢

明文加密算法密文
一种针对格基后量子密码的能量侧信道分析框架
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
奇怪的处罚
奇怪的处罚
基于小波变换和混沌映射的图像加密算法
四部委明文反对垃圾焚烧低价竞争
云存储中支持词频和用户喜好的密文模糊检索
Hill加密算法的改进