分享
 
 
 

DES加密算法在门禁系统中应用

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

DES加密算法在门禁系统中应用

——MCS51单片机汇编语言的DES加密算法的实现

提要:本文介绍了在门禁系统中使用MCS51汇编语言编写DES加密算法的方法。简要说明DES加密算法的原理,及实现子程序。

关键字:门禁系统 DES加密算法 MCS51单片机 汇编语言

门禁系统由于其有保密的性质,因此,在门禁系统中信息的加密是非常重要。

我们研制的门禁系统系统结构如图所示:

门禁系统是设在一幢大楼内,由在计算中心服务器、在每层的工业控制机、每层若干个控制器(含键盘、读卡器、执行机构)构成,服务器和每层的工业控制机采用20mA电流环进行数据传输。每层工业控制机采用RS485标准双绞线和最多32个控制器进行数据传输。控制器的中央处理器采用MCS89C51。为了防止在数据传输中,有人可能在RS485总线挂接监听设备,窃取Ic卡密码。因此,在传输过程中密码含数据采用DES加密算法,工业控制机采用DOS环境下C语言的编程,其程序可以在网上找到,本文着重写的控制器MCS51单片机的DES加密算法编程。

DES加密算法的加密算法可表达如下:

DES(m)=IP-1·T16·T15·T14· …·T2·T1·IP

程序主要完成(1)IP置换 和 IP的逆置换 IP-1 (2)DES的迭代过程(3)子密匙的生成。

系统通信的数据包格式如下:

4个字节同步头+1个字节(命令字)+7个字节(密码)+1个校验字

根据通信协议:需将命令字和密码共8个字节进行加密

程序内存分配:

把8031的内部RAM区分为如下:

20H-27H 存放变换源矩阵 位地址范围00-3FH ( 0-63)

28H-2FH 存放变换源目的矩阵 位地址范围40-7FH( 64-127)

30 H-37H 存放临时数据的矩阵

38 H-3FH 存放临时数据的矩阵

外部RAM 存放数据如下:

0000H-0007H 存放命令字 、密码

0008H-000FH 存放KEY

一、IP置换 和 IP的逆置换 IP-1

IP置换有两种方法实现:

1) 一是使用MCS51单片机的20H-2FH的16个字节,其每位都有位地址。将源矩阵考入20H-27H(位地址空间 00H-3FH) , 使用MOV C,bit MOV bit,C指令把位信息考到目的矩阵28H-2FH(位地址空间 40H-7FH)即可 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

例如:第一个置换 MOV C,39H

MOV 40H,C

注意:位地址空间使用0-3FH 从0

开始,故将39H十六进制数对应十

进制数为57

IP-1置换

40 8 48 16 56 24 64 32

39 7 47 15 55 23 63 31

38 6 46 14 54 22 62 30

37 5 45 13 53 21 61 29

36 4 44 12 52 20 60 28

35 3 43 11 51 19 59 27

34 2 42 10 50 18 58 26

33 1 41 9 49 17 57 25

同理;实现IP-1置换。这种方法的优点是结

构简单,执行速度较快但是较多地占用

ROM空间。

2)第二种方法是使用查表的方法;

程序将源矩阵放在30H-37H,目的矩阵放在38H-3FH.查表得到IP置换、IP-1置换的位序号n,带进位标志C的右移30H-37H单元n次,将位信息考入目的矩阵。下列子程序以IP置换为例。

MOV R7,1 ;R7存放目的矩阵的位序号

IPLOOP1: MOV A,R7

MOV R6,A

IPLOOP2: RLC 3FH ;左旋目的矩阵(R7)次

RLC 3EH

RLC 3DH

RLC 3CH

RLC 3BH

RLC 3AH

RLC 39H

RLC 38H

DJNZ R6,IPLOOP2 ;第(R7)位信息

MOV DPTR,TABLEIP

MOV A,R7

MOVC A,@DPTR+A

MOV R6,A

MOV R5,A

IPLOOP3: RLC 37H ;左旋源矩阵

RLC 36H

RLC 35H

RLC 34H

RLC 33H

RLC 32H

RLC 31H

RLC 30H

MOV 00H,C ;保存位信息到20H中的第0位

DJNZ R6,IPLOOP3

MOV C,00H

IPLOOP4: RRC 30H ;恢复原矩阵 (右旋源矩阵)

RRC 31H

RRC 32H

RRC 33H

RRC 34H

RRC 35H

RRC 36H

RRC 37H

DJNZ R5,IPLOOP4

MOV A,R7

MOV R5,A

MOV C,00H ;置矩阵位信息

IPLOOP5: RRC 38H ;右旋目的矩阵

RRC 39H

RRC 3AH

RRC 3BH

RRC 3CH

RRC 3DH

RRC 3EH

RRC 3FH

DJNZ R5,IPLOOP5

INC R7

CJNE R7,#64,IPLOOP1

RET

TABLEIP: DB 58,50,42,34,26,18,10,2

DB 56, 52,44,36,28,20,12,4

DB 62,54,46,38,30,22,14,6

DB 64,56,48,40,32,24,16,8

DB 57,49,41,33,25,17,9,1

DB 59,51,43,35,27,19,11,3

DB 61,53,45,37,29,21,13,5

DB 63,55,47,39,31,23,15,7

二、DES的迭代过程

DES 的迭代过程如图所示:

迭代过程分以下几个步骤:

(1) 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

矩阵T经过IP置换后,将左4个字节放在30H-33H单元(L0),右4个字节放在20H-23H单元(R0)。

(2) 对R0进行E置换,E置换程序可以参照IP置换、IP-1置换。将结果存放在28H-2FH单元8个字节中,每个字节仅有6位有效。b1b2b3b4b5b6。

(3) 将E置换所得结果和k1异或。Ki的产生请文章下面讨论。

(4) 使用一个子程序调整28H-2FH单元8个位的排列顺序如下:

b1 b6 0 0 b2 b3 b4 b5

前2位是S盒行b1b6,后4位是S盒列b2b3b4b5。将S1S2…S8编成一个大表。

(5) P置换

16 7 20 21

29 12 28 17

1 15 23 26

5 18 31 10

2 8 24 14

32 27 3 9

19 13 30 6

22 11 4 25

查表获得S盒的输出。将S盒输出进行P置换,P置换参照IP置换、IP-1置换。即得到f(Ri-1,ki)

(5)将所得f(Ri-1,ki)和30H-33H单元(L0)异或,将所得放入20H-23H单元(R1)。

将右4个字节放在20H-23H单元(R0)拷贝到30H-33H单元(L1)。

(6)进行下一步迭代。

三、子密匙的生成。

子密匙的生成流程图如下:

PC-1置换 PC-2置换程序可以参照IP置换、IP-1置换 。只不过PC-1置换是对56比特信息 PC-2置换是对48比特信息 进行重新排序而已。

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

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

PC-1 PC-2

置换 置换

密匙k是64位比特,经过PC-1置换,其中C0 放在20H-23H单元,D0放在24H-27H单元 20H-27Hd单元只有d7-d1位有效,注意在以下LSi (循环左移)中,丢弃20H-27Hd单元d0位。根据下表进行 LSi (循环左移)操作。

迭代顺序123456789101112131516

左移位数112222221222221

经过LSi (循环左移)得到C0 C1 C2 …C16 D0 D1 D2…D16 。

Ci Di (I=1…16)经过PC-2置换得到48比特的 k1、k2 ….k16 子密匙。其子程序限于篇幅,本文不再提供。

以上介绍了使用MCS51汇编语言实现DES加密算法的方法。如需完整程序,请E_mail至zhjsahhf@mail.hf.ah.cn。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有