原创 Des加密尝试

2012-11-9 10:23 490 3 3 分类: 消费电子

其实比起叙述编写DES加密程序过程,我更家愿意去写成功的程序中输出的加密的具体的实例数据,因为这个过程实在是。。。。。有些程序是这样,你知道怎么去编写,你也能清晰的知道你将需要多少的时间去完成这个程序,而事实上,你也做到了,而有些程序,你知道它并不难写,但是就是本来1个小时可以写好的事情,你却使用了超过4个小时的时间去编写。还有些程序,写好了,写的过程基本没有出过啥差错,但是最后运行的时候常常出来一些莫名其妙的错误,而有些程序呢,可以编写,而且编写程序的过程中经常出现错误,想要出现的答案,或者说程序运行的记过就在嘴边了,就在手指上了,屏幕上出现的结果就是不对,于是反复的调试,反复的调试。。。。但是一旦调成,它以后的运行就错不了。

 

而DES这种编程,在我的经历中,就是两个后者。

 

DES加密对我们并不是啥高深的词,不过如果你想深入细细的研究它,恩,你还是需要一定的时间和一定的脑细胞的牺牲的。不过加密就是这样,其实就是数学的变换,各种变换,那些公开和广泛使用的加密算法,肯定不会那么简单,因为他们需要抵挡的密码的攻击是各种各样的,也是出自各种目的的,使用的工具也是各不相同的。

 

我并不打算把这样一个纠结的过程一步一步详细的叙述出来,如果是你,相信你也不会,但是其中噢乖出现的一些需要耗费很多的时间去寻找出来的错误,是需要去分析的,这也是为了让以后的编程的效率更高,也是为了更少的“低级”的错误的频繁的发生。

 

首先还是简略的介绍一下Des的加密的流程,背后的原理我没有研究,如果有兴趣,可以探讨一下,首先说明一点,Des是面向2进制的算法,恩,这个好像并没有啥问题,不过这个确实是有一定的限制的,在具体的应用的程序的编写过程中,常常会受到这个的牵制,二进制,化为我们能够懂得的内容,复原远比拆开更加的困难。

 

这里叙述其中的一个最小最基础的操作,也就是对64个二进制码加密,实际的应用中,不难想象,文本流可以进行截断,然后64位64位的进行加密,最后拼接成一个完整的文本,好了,进入正题。

 

密钥的位数也是64为,64个二进制码,而用户输入的就是一个8位的字符串,然后每一位就可以拆分成8位的二进制的码,然后我们就开始了具体的加密。

 

在初开始,明文,也就是需要被加密的内容(这里的内容就是指二进制的码,以后同此,不再说明),还有用于加密的密钥,就已经变得面目全非了,这个是由于在开始的时候分别对他们两者进行了不同的方式的转换,重新的排列,其中密钥的处理最复杂,分别叙述。

 

加密中使用的密钥,需要16个,当然,不是需要用户输入16个,而是根据前面的输入的密钥产生16个,这样不是有很多重复吗?不是的,因为产生的过程并不是简单的组合,子密钥的产生过程包括了置换,循环位移,图片如下:

置换,他的意思就是对密钥进行重新排列,这样的目的除了让其面目全非,更多是安全上的考虑,你可能要问,这种置换的格式或方法参数是固定的吗?是的。

 

具体的参数这里不给出,网上和教科书中也有很多的涉及,所以首先,我们就需要写一个生产16个密钥的函数了。

 

然后就是明文的“再次“产生,这里对于明文没有那么繁琐的步骤,只是一个置换,将数据打乱重新组合,变为左32位和右32位。

 

这样的两个产生函数之后,就是正式的加密,而这里也是编程的过程中需要注意最多的地方,因为在这里犯下“低级”错误的概率是最大的。

 

分两张给出过程:

 

总共是16轮的加密过程,这些过程大同小异,所以只需要看懂一个就可以了,在编程中,就是用循环的结构,来完成这样的过程。

 

就第一轮而言,左右各32位的内容,然后经过各自的运算,把结果值传递给下一组左右32位的内容,这样,进行16轮,最终得到需要的结果。

 

不过图中有一个错误,这个错误也是后来发现的,并且也是十分致命的,那就是在即将要出结果的最后一轮中,规则有一点的改变,那就是L16不是等于R15,而是反过来,R16等于R15,然后L16等于另一个值,好了,在之前的循环中,主要是对于R的赋值的运算有一些复杂,其中包含一个模2加(就是各位异或),还有一个关键的加密函数,这个函数中使用到之前产生的密钥,并且要用到S盒,S盒是个神奇的东西,有了它,DES中产生了非线性的因素,这样才能对安全达到一定的保证,否则就不好说了。

 

S盒的具体内容可以在别的地方看到,原理和流程就不详细说了,在编程的时候,这里一般不会出问题,问题要出也是主要在对于位的操作上,不过有很多的例程可以参考,所以不再叙述。

 

 

文章评论0条评论)

登录后参与讨论
相关推荐阅读
jxcjzxjxc_925574915 2015-04-10 00:59
小米手环开箱
  如果仅仅从价格上去考量,小米手环无疑是十分适合入手的,从官方的介绍中也可以看到它的很多亮点,无感佩戴,精准传感器,放水防尘。。。。。。那么,下面,就是抛开他诱人的宣传,剥离其惊人的价格,而还原...
jxcjzxjxc_925574915 2015-03-14 09:36
nokia n1开箱 补图
上一篇只能上传5张图片,精彩未竟,开此片继续。...
jxcjzxjxc_925574915 2015-03-14 09:34
nokia n1开箱
nokia n1评测   本来打算在年前写完这篇的,没想到再次提笔已经到了2015,过去的一年新鲜多于辛苦,也算是一个不错的开端,废话少说,开箱啦。 作为老牌劲旅的强势回归之作,总结起...
jxcjzxjxc_925574915 2014-10-23 16:01
Android 4.4源码获取
    总的思路来自于这一片帖子: blog.csdn.net/zeroboundary/article/details/24411767   对于身处在墙里面的程序员们来说,...
jxcjzxjxc_925574915 2014-03-17 15:37
新年第一篇,关于max6675
  2014年已经来到了3月份,这篇文章算是开年以来的第一篇文章,开始前还是先扯些别的话题吧。 首先是关于马航客机,祝愿他们平安回来,不论生命多么脆弱,为他们祈祷,为他们祝福。 周日的...
jxcjzxjxc_925574915 2013-11-22 13:53
高交会归来4
详细说说这个显示技术,总的来说,显示技术的趋势就是向着更加清晰,更加立体,更加优雅,更加智能的方向发展,这几点也在高交会的展会现场得到了充分的展示,首先是清晰,康佳的4K电视就是一个代表,现场的效...
广告
我要评论
0
3
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /5 下一条