对称加密(2) 对称加密算法

经典的对称加密算法是DES算法,后来又衍生出3DES、TripleDES等增强型的DES算法。此外,.NET还提供了RC2、Rijndael等对称加密算法。下面分别详细介绍。

DES加密算法

对称加密算法中最经典的算法莫过于DES加密算法。DES加密采用的是分组加密的方法,使用56位密钥加密64位明文,最后产生64位密文。DES算法的基本流程如图6-2所示。

图6-2  DES加密算法基本流程

现在对图6-2的整个流程做简要的分析。DES对64位的明文分组M进行操作,M经过一个初始置换IP置换成m0,将m0明文分成左半部分和右半部分m0=(L0,R0),各32位长。然后进行16轮完全相同的运算,这些运算称为函数f,在运算过程中,数据与密匙结合。经过16轮运算之后,可以看到第16轮运算,将右侧第15轮运算的结果(R15)作为左侧运算的最终结果(L16),而右侧最后的结果(R16)为左侧第15轮运算结果(L15)和函数f运算结果的异或运算所得。此后,再将左、右部分合在一起经过一个逆置换,输出密文。

实际加密过程要分成两个同时进行的过程,即加密过程和密钥生成过程,如图6-3所示。结合图6-2和图6-3简单讲解密钥生成过程。

图6-3  加密与密钥生成

如图6-3所示,在16轮循环的每一轮中,密匙位移位,然后再从密匙的64位中选出48位。通过一个扩展置换将数据的右半部分扩展成48位,并通过一个异或操作替代成新的32位数据,在将其置换一次。这四步运算构成了图6-2中的函数f。然后,通过另一个异或运算,函数f的输出与左半部分结合,其结果成为新的右半部分,原来的右半部分成为新的左半部分。该操作重复16次。

DES算法的解密过程和加密过程几乎完全相同,只是使用密钥的顺序相反。

关于DES算法的更加详细的细节不在本书的讲解范围之内,请读者参考相关资料。

NIST(National Institute of Standards and Technology,美国国家标准技术研究院)在1999年发布了新的DES加密标准,3DES取代DES成为新的加密标准。3DES采用168位的密钥,三重加密,但速度较慢。之后,又出现了AES(Advanced Encryption Standard,先进加密标准)等高级对称机密算法。

时间: 2024-08-30 08:33:05

对称加密(2) 对称加密算法的相关文章

对称加密(1) 对称加密基本原理

对称加密是计算机加密领域最古老也是最经典的加密标准.虽然对称加密被认为不再是安全的加密方式,但是直到现在,我们还看不到它被淘汰的迹象.在很多非网络化的加密环境中,对称加密足以满足人们的需要. 对称加密采用单密钥加密方式,不论是加密还是解密都是用同一个密钥,即"一把钥匙开一把锁".对称加密的好处在于操作简单.管理方便.速度快.它的缺点在于密钥在网络传输中容易被窃听,每个密钥只能应用一次,对密钥管理造成了困难.对称加密的实现形式和加密算法的公开性使它依赖于密钥的安全性,而不是算法的安全性.

对称加密之AES及压缩加密解密解压综合实战

 对称加密:就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密.密钥是控制加密及解密过程的指令.算法是一组规则,规定如何进行加密和解密. 因此加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要.因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题. 由此可见密钥传递也是比较重要的一环,一般都是通过对密钥二次加密的方式,进行密钥的传输 加密实现代码: public static byte[] encryptStringToBytes_AES(b

Java安全之对称加密、非对称加密、数字签名

转贴: http://www.cnblogs.com/duanxz/p/3195098.html Java中加密分为两种方式一个是对称加密,另一个是非对称加密.对称加密是因为加密和解密的钥匙相同,而非对称加密是加密和解密的钥匙不同. 对称加密与非对称加密的区别: 对称加密称为密钥加密,速度快,但加密和解密的钥匙必须相同,只有通信双方才能知道密钥. 非对称加密称为公钥加密,算法更加复杂,速度慢,加密和解密钥匙不相同,任何人都可以知道公钥,只有一个人持有私钥可以解密. 对称加密解密: /* * 对称

java加密算法分享(rsa解密、对称加密、md5加密)_java

复制代码 代码如下: import java.io.UnsupportedEncodingException;import java.security.InvalidKeyException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.security.PrivateKey;import java.security.PublicKey;import jav

对称加密(3) NET对称加密体系

本节介绍System.Security.Cryptography名称空间中的对称加密类. 1. SymmetricAlgorithm类 SymmetricAlgorithm是抽象类,是所有对称加密算法的基类,该类定义的成员在其子类AES类中做介绍. 当使用派生类时,从安全的角度考虑,仅在使用完对象后强制垃圾回收是不够的.必须对该对象显式调用Clear方法,以便在释放对象之前将对象中所包含的所有敏感数据清零.注意,垃圾回收并不会将回收对象的内容清零,只是将内存标记为可用于重新分配.因而,垃圾回收对

详解.NET下的加密解密算法(2) 对称加密

本博文列出了.NET下常用的对称加密算法,并将它们制作成小DEMO,希望能对大家有所帮助. 公共代码 static byte[] CreateKey(int num) { byte[] result = new byte[num]; Random rand = new Random(); for (int i = 0; i < num; i++) { result[i] = (Byte)rand.Next(1, 256); } return result; } DES /// <summary

对称加密(4) .NET对称加密实践

在使用.NET框架提供的加密算法实现类来执行加密任务时,需要准备加密密钥和初始化向量(Initialization Vector,IV).基于对称加密的特点,在加密数据之后一定要保存好密钥和初始化向量,因为解密要用到它们.但是对于不同的数据加密,要使用不同的密钥和初始化向量,理论上每次新的加密过程都应该使用全新的密钥和初始化向量. 通常需要将加密密钥和初始化向量传递给另一个人,这时候需要使用非对称加密算法来加密密钥和初始化向量,然后在网络上传输.本节主要演示如何使用加密实践类,更多的应用内容会在

JAVA加密解密之对称加密

写的一个JAVA对称加密的工具类,支持DES.DESede.AES.Blowfish.RC2.RC4的加密解密. DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来. DESede是由DES对称加密算法改进后的一种对称加密算法.使用 168 位的密钥对资料进行三次加密的一种机制:它通常(但非始终)提供极其强大的安全性.如果三个 56 位的子元素都

对称加密与非对称加密

1 对称加密 对称加密是最快速.最简单的一种加密方式,加密与解密用的是同样的密钥.对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中. 对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越大加密越强,但加密与解密的过程越慢.若只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解密.但密钥有足够大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间.密钥的大小既要照顾到安全性,也要照顾到效率. 2000年10月2日,美国