如何实现DES算法

DES( Data En
cryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。DES算法以被应用于许多需要安全加密的场合。(如:UNIX的密码算法就是以DES算法为基础的)。下面是关于如何实现DES算法的语言性描述,如果您要其源代码,可以到Http//Assassin.yeah.net下载,后者您有任何问题也可以写信给我(Assassin@ynmail.com)。 1-1、变换密钥 取得64位的密钥,每个第8位作为奇偶校验位。 1-2、变换密钥。  1-2-1、舍弃64位密钥中的奇偶校验位,根据下表(PC-1)进行密钥变换得到56位的密钥,在变换中,奇偶校验位以被舍弃。Permuted Choice 1 (PC-1)57 49 41 33 25 17 91 58 50 42 34 26 1810 2 59 51 43 35 2719 11 3 60 52 44 3663 55 47 39 31 23 157 62 54 46 38 30 2214 6 61 53 45 37 2921 13 5 28 20 12 41-2-2、将变换后的密钥分为两个部分,开始的28位称为C[0],最后的28位称为D[0]。1-2-3、生成1
6个子密钥,初始I=1。1-2-3-1、同时将C[I]、D[I]左移1位或2位,根据I值决定左移的位数。见下表I: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16左移位数: 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 11-2-3-2、将C[I]D[I]作为一个
整体按下表(PC-2)变换,得到48位的K[I] Permuted Choice 2 (PC-2)14 17 11 24 1 53 28 15 6 21 1023 19 12 4 26 816 7 27 20 13 241 52 31 37 47 5530 40 51 45 33 4844 49 39 56 34 5346 42 50 36 29 321-2-3-3、从1-2-3-1处循环执行,直到K[16]被计算完成。 2、处理64位的数据2-1、取得64位的数据,如果数据长度不足64位,应该将其扩展为64位(
例如补零)2-2、将64位数据按下表变换(IP)Initial Permutation (IP)58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 159 51 43 35 27 19 11 361 53 45 37 29 21 13 563 55 47 39 31 23 15 72-3、将变换后的数据分为两部分,开始的32位称为L[0],最后的32位称为R[0]。2-4、用16个子密钥加密数据,初始I=1。2-4-1、将32位的R[I-1]按下表(E)扩展为48位的E[I-1]Expansion (E)32 1 2 3 4 54 5 6 7 8 98 9 10 11 12 1312 13 14 15 16 1716 17 18 19 20 2120 21 22 23 24 2524 25 26 27 28 2928 29 30 31 32 12-4-2、异或E[I-1]和K[I],即E[I-1] XOR K[I]2-4-3、将异或后的结果分为8个6位长的部分,第1位到第6位称为B[1],第7位到第12位称为B[2],依此类推,第43位到第48位称为B[8]。2-4-4、按S表变换所
有的B[J],初始J=1。所有在S表的值都被当作4位长度处理。2-4-4-1、将B[J]的第1位和第6位组合为一个2位长度的变量M,M作为在S[J]中的行号。2-4-4-2、将B[J]的第2位到第5位组合,作为一个4位长度的变量N,N作为在S[J]中的列号。2-4-4-3、用S[J][M][N]来取代B[J]。Substitution Box 1 (S[1])14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 70 15 7 4 14 2 13 1 10 6 12 11 9 5 3 84 1 14 8 13 6 2 11 15 12 9 7 3 10 5 015 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13S[2]15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 103 13 4 7 15 2 8 14 12 0 1 10 6 9 11 50 14 7 11 10 4 13 1 5 8 12 6 9 3 2 1513 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9S[3]10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 813 7 0 9 3 4 6 10 2 8 5 14 12 11 15 113 6 4 9 8 15 3 0 11 1 2 12 5 10 14 71 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12S[4]7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 1513 8 11 5 6 15 0 3 4 7 2 12 1 10 14 910 6 9 0 12 11 7 13 15 1 3 14 5 2 8 43 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14S[5]2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 914 11 2 12 4 7 13 1 5 0 15 10 3 9 8 64 2 1 11 10 13 7 8 15 9 12 5 6 3 0 1411 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3S[6]12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 1110 15 4 2 7 12 9 5 6 1 13 14 0 11 3 89 14 15 5 2 8 12 3 7 0 4 10 1 13 11 64 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13S[7]4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 113 0 11 7 4 9 1 10 14 3 5 12 2 15 8 61 4 11 13 12 3 7 14 10 15 6 8 0 5 9 26 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12S[8]13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 71 15 13 8 10 3 7 4 12 5 6 11 0 14 9 27 11 4 1 9 12 14 2 0 6 10 13 15 3 5 82 1 14 7 4 10 8 13 15 12 9 0 3 5 6 112-4-4-4、从2-4-4-1处循环执行,直到B[8]被替代完成。2-4-4-5、将B[1]到B[8]组合,按下表(P)变换,得到P。Permutation P16 7 20 2129 12 28 171 15 23 265 18 31 102 8 24 1432 27 3 919 13 30 622 11 4 252-4-6、异或P和L[I-1]结果放在R[I],即R[I]=P XOR L[I-1]。2-4-7、L[I]=R[I-1]2-4-8、从2-4-1处开始循环执行,直到K[16]被变换完成。2-4-5、组合变换后的R[16]L[16](注意:R作为开始的32位),按下表(IP-1)变换得到最后的结果。Final Permutation (IP**-1)40 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 2835 3 43 11 51 19 59 2734 2 42 10 50 18 58 2633 1 41 9 49 17 57 25以上就是DES算法的描述。 给力(0票)动心(0票)废话(0票)专业(0票)标题党(0票)路过(0票) 原文:如何实现DES算法 返回网络安全首页

时间: 2024-08-03 06:38:51

如何实现DES算法的相关文章

如何实现 DES 算法

算法 How to implement the Data Encryption Standard (DES) A step by step tutorial Version 1.2 The Data Encryption Standard (DES) algorithm, adopted by the U.S. government in 1977, is a block cipher that transforms 64-bit data blocks under a 56-bit secre

轻松实现DES算法查看器

DES(Data Encrypton Standard) 算法的实现网上已经有很多,本人在此讲述 的是在DES算法加密过程中如何查看16迭代过程中生成的Ki,Li,Ri,Fi,Si等,这 样可以当做一个DES加密对照器,这样可以方便的发现你在加密过程中出现的错 误! 图一 :程序运行界面 本程序用了一个列表框来显示所有16次迭代的所有信息,并 在选择一栏后,在下面的编辑框中显示详细信息,这样就可以不必在列表框中拖 曳鼠标,这样方便拷贝! 程序介绍: 采取的编程语言是微软的VC6.0,大小为184

DES算法及其在VC++6.0下的实现(下)

在<DES算法及其在VC++6.0下的实现(上)>中主要介绍了DES算法的基本原理,下面让我们继续: 二.子密钥的生成 64比特的密钥生成16个48比特的子密钥.其生成过程见图: 子密钥生成过程具体解释如下: 64比特的密钥K,经过PC-1后,生成56比特的串.其下标如表所示: PC-1 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 6

DES算法及其在VC++6.0下的实现(上)

摘要: 本文介绍了一种国际上通用的加密算法-DES算法的原理,并给出了在VC++6.0语言环境下实现的源代码.最后给出一个示例,以供参考. 关键字:DES算法.明文.密文.密钥.VC: 本文程序运行效果图如下: 正文: 当今社会是信息化的社会.为了适应社会对计算机数据安全保密越来越高的要求,美国国家标准局(NBS)于1997年公布了一个由IBM公司研制的一种加密算法,并且确定为非机要部门使用的数据加密标准,简称DES(Data Encrypton Standard).自公布之日起,DES算法作为

Python基于DES算法加密解密实例

  本文实例讲述了Python基于DES算法加密解密实现方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 6

DES 算法的 C++ 与 JAVA 互相加解密

原文地址:http://www.cnblogs.com/AloneSword/p/3479376.html 在 JAVA 中,从 J2EE1.4 开始,SUN 提供了 JCE( JAVA CRYPTO ENGINE ),其中包含有 DES 算法,在 JAVA 中使用 DES 算法的代码示例如下: import java.security.Key; import java.security.Security; import javax.crypto.Cipher; public class DES

java算法-C# des算法转java des 结果不一致

问题描述 C# des算法转java des 结果不一致 C# 其中 provider.Mode加密为CBC provider.Padding为PKCS7 string data="-1"; byte[] rgbKey = {69, 70, 67, 49, 56, 49, 69, 70}; byte[] rgbIV = {54, 57, 51, 69, 52, 48, 55, 70}; MemoryStream ms = new MemoryStream(); CryptoStream

DES算法解析

DES算法  美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告. 1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES,Data Encryption Standard). 一.DES算法  美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密

关于DES算法解密,为了安全,不想留下解密后的文件怎么操作?

问题描述 关于DES算法解密,为了安全,不想留下解密后的文件怎么操作? 关于DES算法解密,为了安全,不想留下解密后的文件,只要在代码里面正常读取出来就可以了.这样怎么操作? /** * 文件采用DES算法解密文件 * @param file 已加密的文件 如/mnt/以加密.txt * @param destFile 解密后存放的文件名 如/mnt/解密后文件.txt */ public void decrypt(String file, String dest) throws Excepti

使用 DES 算法对数据加密

DES算法 提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改 具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握 DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础 实现经济,运行有效,并且适用于多种完全不同的应用   苹果本身支持DES加密,在项目中引入头文件 CommonCrypto/CommonCryptor.h 即可使用相关函数. 我自己对其进行了封装,支持ARC与非ARC YXCrypto.h // // YXCrypt