Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >DES算法中子密钥的产生

DES算法中子密钥的产生

作者头像
许杨淼淼
发布于 2019-12-29 12:13:18
发布于 2019-12-29 12:13:18
2.7K0
举报
文章被收录于专栏:醉程序醉程序

DES (数据加密标准 Data Encryption Standard),因密钥长度过短及可能含有的后门引起争议,现也已经不在作为标准,由AES取代。在学了《网络安全技术》关于加密算法中的DES后,写了这一篇笔记,主要写的是DES算法中子密钥的生成算法。

  1. 初始密钥也称种子密钥,64位,经过子密钥换位表PC-1的变换后,由64位变成56位,这56位分为两组C0和D0; > 子密钥换位表PC-1 57 49 41 33 25 17 09 01 58 50 42 34 26 18, 10 02 59 51 43 35 27 19 11 03 60 52 44 36 63 55 47 39 31 23 15 07 62 54 46 38 30 22, 14 06 61 53 45 37 29 21 13 05 28 20 12 04
  2. C0和D0作一次循环左移得到C1和D2; > 循环左移的规则为:16次循环,每次左移 1 1 2 2, 2 2 2 2, 1 2 2 2, 2 2 2 1
  3. C1和D2合并为56位,再经过子密钥换位表PC-2的变换后,由56位变成48位,即得到第一个子密钥K1 > 子密钥换位表PC-2 14 17 11 24 01 05 03 28 15 06 21 10 23 19 12 04 26 08 16 07 27 20 13 02 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32
  4. C1和D2,由C0和D0经过循环左移得到。C2和D2,由C1和D1经过循环左移得到,以此类推。

PS : 到底是密钥(yao)还是密钥(yue) 数据加密标准

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年3月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
算法科普:神秘的 DES 加密算法
DES 算法是一种常见的分组加密算法,由IBM公司在1971年提出。DES 算法是分组加密算法的典型代表,同时也是应用最为广泛的对称加密算法。本文将详细讲述DES 的原理以及实现过程。
五分钟学算法
2019/09/03
8.2K1
算法科普:神秘的 DES 加密算法
Web安全学习笔记之DES算法实例详解
转自http://www.hankcs.com/security/des-algorithm-illustrated.html
Jetpropelledsnake21
2018/12/04
9860
Web安全学习笔记之DES算法实例详解
DES算法C++程序设计和实现
Data Encryption Standard (DES) 是一种典型的对称密钥算法,采用块加密方法,它以64位为分组长度,64位一组的明文作为算法的输入,通过与密钥运算和一系列复杂的操作,输出同样64位长度的密文,用同一密钥可以解密,所以该算法所有的保密性依赖于密钥,认为只有持有加密所用的密钥才能解密密文。DES采用64位密钥,但由于每8位中的最后1位用于奇偶校验,实际有效密钥长度为56位。DES算法的基本过程是换位和置换。
梦飞
2022/06/23
1.1K0
DES算法C++程序设计和实现
DES加解密-简单原理与go语言实现
公式: Li = R(i - 1), Ri = L(i - 1) ^ F(R(i - 1), Ki)
i0gan
2021/07/01
1K0
DES加解密-简单原理与go语言实现
actionscript DES 加密 解密 (AES,其他加密)
找了半天其实都没找到什么好的DES加密代码。 难怪有一个博主说,他找了半天没找到自己实现了一个。http://www.iteye.com/topic/422575 但貌似他自己都说加密大的明文会出错,所以我就不敢试用了。 另外,在天地会下载了一个,发现功能还是能达到的,貌似是把js版转过来的。但是加密的速度非常的低,应该是实现的问题。比我在一个外国佬微博找到的AES加密代码还要慢十几倍。 (!!!补充,最后发现还是外国佬写好的那个Crypto库( http://code.google.com/p/as3cr
用户1258909
2018/07/03
2.8K0
DES加解密算法原理详解与实现
​ 要编写DES密码,先熟悉DES原理,其基本流程就是先将明文分成64bit的分组,然后将64bit二进制码输入到密码器中,密码器对输入的64位码首先进行初始置换,然后在64bit主密钥产生的16个子密钥控制下进行16 轮乘积变换,接着再进行逆置换就得到64位已加密的密文。DES的流程图如下:
timerring
2022/07/20
1.7K0
DES加解密算法原理详解与实现
DES算法的python3实现
DES原理 这里不予以复述, 有很多优秀的博客 原理可以参考这篇博客 https://www.cnblogs.com/songwenlong/p/5944139.html
py3study
2020/01/10
1.1K0
C语言如何实现DES加密与解密
在工作中遇到的Des解密问题,第三方发来的数据需要我们进行des解密,但是解密的结果前几位始终是乱码。废了半天劲,终于找到了问题所在。
芯动大师
2023/10/14
5782
C语言如何实现DES加密与解密
python 版DES和MAC算法
最近工作中需要用到python中的DES算法,虽然有现成的库,但总感觉用着不方便。于是把之前用的C和Java写的DES和MAC算法移植到python中。测试了下没问题。
杨永贞
2020/08/04
1.1K0
各种密码学算法的GUI编程实现(DES、AES、Present、扩展欧几里得算法、素性检测)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/caomage/article/details/85337080
从入门到进错门
2019/01/03
1.5K0
DES原理及python实现
DES是一种对称加密算法【即发送者与接收者持有相同的密钥】,它的基本原理是将要加密的数据划分为n个64位的块,然后使用一个56位的密钥逐个加密每一个64位的块,得到n个64位的密文块,最后将密文块拼接起来得到最终的密文
JuneBao
2022/10/26
1.8K0
DES原理及python实现
java 版DES和MAC算法
import java.io.UnsupportedEncodingException; import util.Util; /** * PBOC3DES 加密算法 * @author Administrator * */ public class PBOC3DES { private static int HEX = 0; private static int ASC = 1; private static int[][] subKey = new int[16][48]; /
杨永贞
2020/08/04
1.6K0
DES算法-C/C++实现
本文介绍了DES算法的加密与解密过程,通过对输入数据进行初始置换、子密钥生成、8轮标准加密过程、逆置换、解密过程的详细描述,最后给出了完整的代码示例。
f_zyj
2018/01/09
3K0
浅谈加密算法 aes
常见的不可逆加密算法有MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA-512。他们的特点是,不能从加密后的结果解密出原文,主要用于校检数据的一致性,防止篡改数据,我们之前分析的大部分sign签名都是不可逆算法。也叫散列算法或者哈希算法。
奋飞安全
2022/04/07
2.4K0
四种分组密码操作模式的DES加解密算法——C语言实现
子密钥计算接受初始密钥或者上一轮的密钥作为输入,如果是初始密钥则进行 PC1 置换,然后将密钥分为左右两部分,对这两部分进行 LS 置换,置换后将结果合并并经过 PC2 置换得到此轮的子密钥。子密钥计算过程如下:
Andromeda
2023/12/03
5710
四种分组密码操作模式的DES加解密算法——C语言实现
DES/3DES/AES加密
数据加密算法DES 数据加密算法(Data EncryptionAlgorithm,DEA)的数据加密标准(Data Encryption Standard,DES)是规范的描述,它出自 IBM的研究工作,并在 1997 年被美国政府正式采纳。它很可能是使用最广泛的秘钥系统,特别是在保护金融数据的安全中,最初开发的 DES 是嵌入硬件中的。通常,自动取款机(Automated Teller Machine,ATM)都使用 DES。 DES 使用一个 56位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环。 *** DES的主要形式被称为蛮力的或彻底密钥搜索,即重复尝试各种密钥直到有一个符合为止。如果 DES 使用 56 位的密钥,则可能的密钥数量是 2 的56 次方个。随着计算机系统能力的不断发展,DES 的安全性比它刚出现时会弱得多,然而从非关键性质的实际出发,仍可以认为它是足够的。不过,DES 现在仅用于旧系统的鉴定,而更多地选择新的加密标准 — 高级加密标准(Advanced EncryptionStandard,AES)。 DES 的常见变体是三重 DES,使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES。 IBM 曾对 DES 拥有几年的专利权,但是在 1983 年已到期,并且处于公有范围中,允许在特定条件下可以免除专利使用费而使用。 由于DES是加(解)密64位明(密)文,即为8个字节(8*8=64),可以据此初步判断这是分组加密,加密的过程中会有16次循环与密钥置换过程,据此可以判断有可能是用到DES密码算法,更精确的判断还得必须懂得一点DES的加密过程。 Crackme实例分析 本期Crackme用到MD5及DES两种加密算法,难度适中。这次我们重点来看一下DES的加密过程及注册算法过程。用调试器载入程序,下GegDlgItemTextA断点,可以定位到下面代码,我们先来看一下整个crackme的注册过程: 由于代码分析太长,故收录到光盘中,请大家对照着分析(请见光盘“code1.doc”) 从上面分析可以看出,注册过程是类似:f(机器码,注册码)式的两元运算。机器码是经过md5算法得到的中间16位值,注册码是经过DES解密过程取得16位注册码,然后两者比较,如相等,则注册成功。机器码的运算过程可以参照上一期的MD5算法来理解。下面重点来说一下注册码DES的运算过程。 1、密钥处理过程:一般进行加解密过程都要初始化密钥处理。我们可以跟进004023FA CALL Crackme1.00401A40这个call,可以看到如下代码: …(省略)... 00401A4D LEA ECX,DWORD PTR DS:[ECX] 00401A50 /MOV EDX,EAX 00401A52 |SHR EDX,3 00401A55 |MOV DL,BYTE PTR DS:[EDX+ESI] 00401A58 |MOV CL,AL 00401A5A |AND CL,7 00401A5D |SAR DL,CL 00401A5F |AND DL,1 00401A62 |MOV BYTE PTR DS:[EAX+417DA0],DL 00401A68 |INC EAX 00401A69 |CMP EAX,40 这里比较是否小于64 00401A6C \JL SHORT Crackme1.00401A50 以上过程就是去掉密钥各第八位奇偶位。 …(省略)... 00401AB0 |MOV DL,BYTE PTR DS:[ECX+417D9F] 00401AB6 |MOV BYTE PTR DS:[EAX+417BA3],DL 00401ABC |ADD EAX,4 00401ABF |CMP EAX,38 这里进行密钥变换 …(省略)... 00401BFF ||MOVSX ECX,BYTE PTR DS:[EAX+412215] 00401C06 ||MOV CL,BYTE PTR DS:[ECX+417D9F] 00401C0C ||MOV BYTE PTR DS:[EAX+417BA5],CL 00401C12 ||ADD EAX,6 00401C15 ||CMP EAX,30 这里产生48位的子密钥 00401C18 |\JL SHORT Crackme1.00401BA0 00401C1A |MOV EAX,DWORD PTR SS:[ESP+14]
py3study
2020/01/08
1.1K0
【计算机网络】网络安全 : 对称密钥密码体质 ( 数据加密标准 DES | DES 加密过程 | DES 保密性 | 三重 DES 加密 )
对称密钥密码体质 : 又称为 常规密钥密码体质 , 加密密钥 与 解密密钥 是相同的 ;
韩曙亮
2023/03/28
9830
【计算机网络】网络安全 : 对称密钥密码体质 ( 数据加密标准 DES | DES 加密过程 | DES 保密性 | 三重 DES 加密 )
非对称密钥沉思系列 收官篇:证书格式与编码的部分总结
数字1被ISO加在ASN的后边,是为了保持ASN的开放性,可以让以后功能更加强大的ASN被命名为ASN.2等,但至今也没有出现。
bowenerchen
2023/01/04
3.9K1
Golang与对称加密
DES(Data Encryption Standard)数据加密标准,是目前最为流行的加密算法之一 DES是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准FIPS,并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来
仙人技术
2021/12/27
1K0
Golang与对称加密
【密码学】【Go】详解DES-CBC模式
CBC模式的全称是:Cipher Block Chaining模式(密文分组链接模式)。 在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。
Regan Yue
2021/09/16
1.1K0
【密码学】【Go】详解DES-CBC模式
相关推荐
算法科普:神秘的 DES 加密算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档