密码学
the_fire
奋发图强,不敢有丝毫停顿……
展开
-
密码学暂时告一段落
<br /><br />时间 2010 年 12 月 03 日 作者 the5fire <br /><br />在经过近两周的激烈和紧张的密码学学习之后,现在也终于是可以告一段落了。既然是一段落就要有一段落的样子,因此搂耙搂耙还是很有必要的。<br />毕业论文题目定为《软件实现3轮S-DES的差分攻击》,为了这个题目也是安排了攻克计划:<br />1. 软件实现DES算法,完成加解密功能;文章:《使用java实现真实数据DES加密(java源代码)》就是这个阶段的产物。<br />2. 软件实现S-DES原创 2010-12-07 11:01:00 · 1434 阅读 · 3 评论 -
S-DES算法java实现(源码下载)
<br /><br />今天上午分析了一下S-DES算法的大概流程,因为小区要停电,所以只是简单的分析了一下。实现是今天晚上写出来的。<br />有了DES分析的过程之后,S-DES的分析和实现都简单多了。以至于实现的时候直接看这流程图就开始写了。当时一边和同学聊着天一边敲着代码一边思考着:我也太笨了,到现在才学会看着流程图写程序,我自己很汗颜。<br />言归正传,类结构上和DES基本相同,不过这里把密钥生成部分给单独提取出来了,这样我感觉更直观。<br />S_DES:专门用来被别人直接调用的,也可以说原创 2010-11-25 00:36:00 · 2735 阅读 · 1 评论 -
S-DES加密算法流程概述
图中符号含义:IP:预定义的初始置换Fk:包含置换、替代操作且依赖于密钥的变换,公式:具体算法如图所示:SW:将输入的数据进行高四位和第四位交换;IP-1:IP的逆置换;RLC_1:循环左移1位;RLC_2:循环左移2位算法概述:先生成密钥:1. 需要产生两个密钥,输入的10位密钥,然后进行P10置换(类似于DES中的IP置换),原创 2010-11-25 00:21:00 · 10839 阅读 · 0 评论 -
密码分析概述
密码分析的方法主要有以下三种:1. 穷举攻击:密码分析者通过试遍所有的密钥来进行破译,显然可以通过增大密钥量来对抗穷举攻击。2. 统计分析攻击:密码分析者通过分析密文和明文的统计规律来破译密码。对抗统计分析攻击的方法是设法使明文的统计特性与密文的统计特性不一样。3. 解密变换攻击:密码分析者针对加密变换的数学依据,通过数学求解的方法来设法找到相应的解密变换。为对抗这种攻击,应该选用具有坚实的数学基础和足够复杂的加密算法。密码分析的类型有原创 2010-11-25 00:20:00 · 7356 阅读 · 0 评论 -
三重DES概述
前面实现了基本的DES算法,但众所周知的是DES算法的安全性不是很高,究其原因还得归结到他的密钥位上,刨去8位校验位,剩下的56位密钥实在太短,以现在普通机器运行的速度,使用穷举法很快就可以破译。(这是我也是看资料看来得,没有实践)基于上述理由所以有必要对DES进行修改,因此也就有了多重DES。所谓多重DES不过是通过多个密钥来进行重复的加密运算,其目的不过是为了增加密钥量。那到底重复多少次才合理呢,我是不晓得的,你知道的话可以告诉我/(^o^)/~。不过用的比较广泛的就是三重DES加密了。关于三重DES加原创 2010-11-25 00:17:00 · 13275 阅读 · 1 评论 -
三轮DES和三重DES
<br /><br />哎,这次真的土鳖了,一直觉得三轮和三重是一码事,今天看差分分析的时候老是觉得哪个地方不对劲,但又不知道,晚上要把差分分析的学习总结一下的时候发现问题了。<br />差分分析中很平常的提到3轮、8轮、完全16轮这样的字眼,我心里还纳闷,不是说三重DES效率就不太好了,怎么又到了16重,(其实是我自己一直把“轮”和“重”当成一码事了,郁闷。)<br />察觉到不对劲之后又找了找不同书本的关于DES的介绍,终于在一本书中找到了一个说法:“图8.3是DES全部16轮(Round)的加/解密结原创 2010-11-26 07:34:00 · 2531 阅读 · 5 评论 -
DES加密算法流程概述
有了上篇文章的打底,要搞懂DES算法也就不是什么难事了。现在整体把流程叙述一遍。然后再用java实现以下。首先就是把明文通过IP置换,得到一个乱序的明文序列,然后将明文序列分成L0和R0左右两部分。接着将R0直接赋值给L1,而L0通过f(R0,K1)进行模2加运算把值赋给R1。接着重复上述步骤直到得到L15和R15。然后把R15赋给L16,L15通过和f(R15,K16)进行模2加运算得到R16。注意这里L16并不是在左侧了,而是和R16换了位置。紧接着就是把R16L16通过 IP逆置换,得到密文。解密过程原创 2010-11-23 08:02:00 · 15723 阅读 · 2 评论 -
使用java实现真实数据DES加密(java源代码)
在前面那篇文章《使用DES实现真实数据加密的前奏(分析)》分析的基础上,用java实现了可以对字符串进行加密,不过遗留的问题是不能对字符串进行解密,因为在把加密后的字节型数组转为字符串之后再转回来就和原先的字节型数组不一样了,会少许多位,不知道这是为什么。莫非字节型数组和字符串不是一对一转换的吗?很迷惑具体实现大家可以先看这个图,这里面主要添加了两个类,DESPre和DESControl。DESPre主要是实现了前一篇文章中说到的基本操作,比如byte数组转成二进制数组,等。DESControl主要是用来操原创 2010-11-24 07:39:00 · 2484 阅读 · 7 评论 -
使用DES实现真实数据加密的前奏(分析)
上篇文章里面用java实现了DES的核心算法,并且对外提供了一个比较简单的接口,可以直接使用,不过有一个问题就是这个算法只是核心,只能实现对64位二进制进行加密。所以要在实际状况下使用的话需要进行预处理才行。所谓预处理就是把真是的数据,比如字符串,数据,等不定长的内容转换成分组的每组64位二进制数据组。然后再进行分组加密,最后结果合并得到加密数据,当然了,为了不让别人看出来最后的二进制密文,你可以把这些分组的数据再转换成字符串或者什么格式的就行了。预处理过程:1. 转换成每组8位的byte数组首先将字符串进原创 2010-11-24 07:36:00 · 1579 阅读 · 0 评论 -
DES加密算法java实现(核心算法+源代码)
其实有了前一篇文章《DES加密算法学习前奏》做为基础之后,要实现DES算法就是很容易的事了。不过为了是自己不过于闭门造车,我还是从网上找了找源代码,有用java写的,有用C++写的,不过所有代码貌似都是一样的。为啥说是一样的呢?一开始写一个类,然后把所有的方法往类里面添,额,我猜测如果不是作者功力很高的话,很难一次就把这个给实现了。并且如果读者功力不是很高的话(譬如说我这样的),也是很难理解其中的调用关系的。还有一点值得一提的是网上流传的方法似乎都是可以直接对文本加密的,所以对于想研究算法的人来说,这无疑是原创 2010-11-23 23:42:00 · 11959 阅读 · 19 评论 -
DES加密算法学习前奏
这几天看了一下DES加密,认真看的话这个算法并不难,有时候觉得困难时因为自己看不下去。茫茫人海,和己者寡。 要学习DES加密算法,我觉得有几点是要先了解的,下面一一列出来:1. 模2加运算这个是比较好理解的,就是两个数相加然后除2取余。2. 理解其中的置换一开始的时候就会对明文进行置换,通过初始置换IP:这个表的含义就是,第一个58就是你明文中的第58个元素,你要放到1的位置,然后把明文中第50个元素放到2的位置,以此类推。3. 子密钥的生成子密钥生成分为三步走:第一步原创 2010-11-19 17:30:00 · 2091 阅读 · 2 评论 -
S-DES简单介绍
关于DES(Data Encryption Standard)已经有所了解了,不过看题目说的是S-DES,不太理解是什么意思,google查了一下,没有找到解释,百度一下吧,更别说了,果然百度是不擅长技术搜索的。后来一想,中文的找不到应该找英文的,于是把google设置为查询英文内容,果然找到几个,虽然不是专门介绍,但只言片语也就够我了解了。 并且查到的资料也比查询中文内容时多,何故?大家心里都清楚的。其实中文的在期刊论文中也能找得到,不过期刊论文一般都是收费的。 看了原创 2010-11-17 14:20:00 · 2470 阅读 · 2 评论 -
差分分析(differential cryptanalysis)概述
差分分析(differential cryptanalysis)是一种选择明文攻击,其基本思想是:通过分析特定明文差分对相对应密文差分影响来获得尽可能大的密钥。它可以用来攻击任何由迭代一个固定的轮函数的结构的密码以及很多分组密码(包括DES),它是由Biham和Shamir于1991年提出的选择明文攻击。差分分析涉及带有某种特性的密文对和明文对比较,其中分析者寻找明文有某种差分的密文对。这些差分中有一些有较高的重现概率,差分分析用这些特征来计算可能密钥的概率,最后定为最可原创 2010-11-26 07:33:00 · 5827 阅读 · 3 评论