若天明 发表于 2015-2-3 23:35:08

ASP教程之在ASP中若何完成 DES 算法(全)

问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时.算法   这是摘自清华BBS的一篇文章,洋文的,小弟把它翻成中文请列位高手指导。
分号(;)后的话是小弟的翻译,井号(#)后的是小弟的一点感触。


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 secret key, by means of permutation and substitution. It
is officially described in FIPS PUB 46. The DES algorithm is used for
many applications within the government and in the private sector.

This is a tutorial designed to be clear and compact, and to provide a
newcomer to the DES with all the necessary information to implement it
himself, without having to track down printed works or wade through C
source code. I welcome any comments.
Matthew Fischer <mfischer@heinous.isca.uiowa.edu>

;下面是引见,我就不翻了。 ;)


Here's how to do it, step by step:

1 Process the key.
;生成密钥

1.1 Get a 64-bit key from the user. (Every 8th bit is considered a
parity bit. For a key to have correct parity, each byte should contain
an odd number of "1" bits.)
;从用户处失掉一个64位的密钥。(每8位一组,每组的第8位是校验位。假如校验
准确,每一个字节应当有一个为1的

1.2 Calculate the key schedule.
;盘算密钥表

1.2.1 Perform the following permutation on the 64-bit key. (The parity
bits are discarded, reducing the key to 56 bits. Bit 1 of the permuted
block is bit 57 of the original key, bit 2 is bit 49, and so on with bit
56 being bit 4 of the original key.)
;对64位的密钥停止以下的置换。(去失落校验位,密钥的实践长度是56位。置换后的
;第一名是原密钥的第57位,第二位是原第49位,第五十六位就是本来密钥的第4位。)
# 乖僻的置换,哪位年老能写出算式?
# 好象是分红两部
# for(j=57;j<64;j++)
# {
# for(i=j;i<0;i-=8)
# {
# if(k=28)
# break;
# c=i;
# k++;
# }
# 这是前28位,不晓得对不合错误?请斧正。


Permuted Choice 1 (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 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4

1.2.2 Split the permuted key into two halves. The first 28 bits are
called C and the last 28 bits are called D.
;把置换后的密钥分为C 和D两局部,各28位。

1.2.3 Calculate the 16 subkeys. Start with i = 1.
;盘算16个子密钥,从i=1入手下手。

1.2.3.1 Perform one or two circular left shifts on both C and
D to get C and D, respectively. The number of shifts per
iteration are given in the table below.
;分离对C和D停止左移一到两位的位移操作,失掉C和D。每次
;位移数量以下:
# 共16次

Iteration # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Left Shifts 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

1.2.3.2 Permute the concatenation CD as indicated below. This
will yield K, which is 48 bits long.
;以下表,改动C和D的分列,失掉48位长的k。
# 不懂 :(
# 是否是丢失落了某些位?

Permuted Choice 2 (PC-2)

14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32

1.2.3.3 Loop back to 1.2.3.1 until K has been calculated.
;反复 1.2.3.1 入手下手的进程,算出16个字密钥。

2 Process a 64-bit data block.
;处置一个64位的数据块。

2.1 Get a 64-bit data block. If the block is shorter than 64 bits, it
should be padded as appropriate for the application.
;获得一个64位的数据块。假如数据块不到64位,就补足64位。
# 多是用0补吧。

2.2 Perform the following permutation on the data block.
;对数据块停止以下置换。
# 又是分红两局部停止,先是偶数位。
# 对照复杂,算式就不写了。

Initial Permutation (IP)

58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7

2.3 Split the block into two halves. The first 32 bits are called L,
and the last 32 bits are called R.
;将数据块等分为L和R两局部。

2.4 Apply the 16 subkeys to the data block. Start with i = 1.
;从i=1入手下手,用16个子密钥对数据块停止加密。

2.4.1 Expand the 32-bit R into 48 bits according to the
bit-selection function below.
;将数据块的后32位R以上面划定规矩停止扩大。
# 不会写算式。:(
Expansion (E)

32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。

柔情似水 发表于 2015-2-4 03:01:56

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

若相依 发表于 2015-2-9 12:32:50

运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。

因胸联盟 发表于 2015-2-11 05:32:24

兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的

灵魂腐蚀 发表于 2015-3-1 21:49:34

我想问如何掌握学习节奏(先学什么再学什么)最好详细点?

再现理想 发表于 2015-3-5 14:46:19

最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。

小女巫 发表于 2015-3-12 08:07:02

Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件

海妖 发表于 2015-3-15 10:14:39

封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。

飘飘悠悠 发表于 2015-3-22 00:08:00

不能只是将它停留在纸上谈兵的程度上。

再见西城 发表于 2015-3-27 04:10:49

下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。

分手快乐 发表于 2015-3-27 19:09:36

以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。

蒙在股里 发表于 2015-3-30 02:51:09

交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。

admin 发表于 2015-4-3 01:22:23

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

老尸 发表于 2015-4-8 15:43:36

用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

深爱那片海 发表于 2015-4-17 18:57:57

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组

莫相离 发表于 2015-4-24 00:32:08

兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的

愤怒的大鸟 发表于 2015-4-26 06:10:56

先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习

冷月葬花魂 发表于 2015-4-28 11:29:39

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

只想知道 发表于 2015-5-5 22:54:29

用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

爱飞 发表于 2015-5-10 02:13:18

如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
页: [1] 2
查看完整版本: ASP教程之在ASP中若何完成 DES 算法(全)