• 大小: 184.56 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-10-18
  • 语言: C/C++
  • 标签:

资源简介

一个加密算法的实现,最最重要的关键词是—速度。
举个例子来说明,速度对加密算法的重要:假设我们实现了两个加密算法DES1.0和DES2.0,
其中DES1.0的速度为900KB/S,DES2.0的速度为1000KB/S。假设一个文件有10G,我需要对其进行加密,
那么,用DES1.0所耗费的时间为1111s,DES2.0的速度为1000S。DES2.0比DES1.0快了111秒。
现实生活里我们要加密的数据还可能远远不止10G。不要小看这111S,要知道,让CPU尽可能的为用户服务,
是我们每一个程序员的职责,不论你是用C,C++还是JAVA。因此,为了速度,我们必须舍弃一些东西。

资源截图

代码片段和文件信息

/*
DES(Data Encrypt Standard数据库加密标准)是迄今为止使用最广泛的加密体制。
     初学信息安全的新生,一般都会被老师要求实现DES算法,如果老师不要求,那么有缘来我这里共同学习的朋友,
 我建议你用C去实现一下,C语言在信息安全领域很重要,更何况隶属于工科的信息安全,你只懂理论是远远不够的。
     想用其他语言实现的朋友,如果你用了汇编,那么请您老人家走开不要来看小弟的笑话。如果你用C++或者JAVA,
 那么我劝您用C吧,因为2年前本人计算过速度,在我的机器上,同样的代码,用C++新建的工程要比用C新建的工程慢了2倍。
 至于JAVA,我估计要慢10倍。
     废话不多说,DES算法的理论我就不聒噪了,想要了解其实现的人,如果不懂其理论就来看这文章,
 即便是看懂了也会走火入魔,或者是某位学生心怀不轨。
    
     一个加密算法的实现,最最重要的关键词是—速度。
     举个例子来说明,速度对加密算法的重要:假设我们实现了两个加密算法DES1.0和DES2.0,
 其中DES1.0的速度为900KB/S,DES2.0的速度为1000KB/S。假设一个文件有10G,我需要对其进行加密,
 那么,用DES1.0所耗费的时间为1111s,DES2.0的速度为1000S。DES2.0比DES1.0快了111秒。
 现实生活里我们要加密的数据还可能远远不止10G。不要小看这111S,要知道,让CPU尽可能的为用户服务,
 是我们每一个程序员的职责,不论你是用C,C++还是JAVA。因此,为了速度,我们必须舍弃一些东西。
     有的同学喜欢用动态数组,因为这也是个好东西,可以节约空间,
 于是有人认为用了动态数组的程序比不用动态数组的程序要高了好几级。
     动态数组貌似高深,但如果你用在加密算法里,我只能说这位同学啊你真是吃力不讨好,
 在计算机世界里,往往静态的东西就是比动态的东西速度要快。
     在此我首先声明,如果你不是在练习结构体和malloc/calloc的使用,
 那么请你果断舍弃这些在加密算法里华而不实的东西。
     好了,说了这么多,各位看官都等急了吧,下面我就结合DES算法原理来分步骤讲解我的代码。 
*//*
一、准备
    首先,头文件与宏定义。
C代码  */ 
#include “stdio.h“  
#include “memory.h“  
#include “time.h“  
#include “stdlib.h“  
  
#define PLAIN_FILE_OPEN_ERROR -1  
#define KEY_FILE_OPEN_ERROR -2  
#define CIPHER_FILE_OPEN_ERROR -3  
#define OK 1
/*
其次,对基本数据类型进行typedef。
    这句是不可以少的,请养成良好习惯,不然以后如果你要修改基本数据类型,累死你。   
C代码   */
typedef char ElemType;
 /*
    而后,是初始置换表,逆初始置换表,S-Box等已知数据。    
C代码    */
//初始置换表IP
int IP_Table[64] = {  57494133251791  
                      595143352719113  
                      615345372921135  
                      635547393123157  
                      56484032241680  
                      585042342618102  
                      605244362820124  
                      625446383022146};   
//逆初始置换表IP^-1  
int IP_1_Table[64] = { 397471555236331  
                       386461454226230  
                       375451353216129  
                       364441252206028  
                       353431151195927  
                       342421050185826  
                       33141949175725  
                       32040848165624};  
//扩充置换表E  
int E_Table[48] = {3101234
                   345678
               789101112  
                   111213141516  
                   151617181920  
                   192021222324  
                   232425262728  
                   27282930310};  
//置换函数P  
int P_Table[32] = {156192028112716  
                   0142225417309  
                  172313312628  
                  18122952110324};  
//S盒  
int S[8][4][16] =//S1  
                  {{{1441312151183106125907}  
                  {0157414213110612119538}  
                  {4114813621115129731050}  
  {1512824917511314100613}}  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     180292  2011-06-22 17:18  DES-C代码\Debug\dess.exe

     文件     205432  2011-06-22 17:18  DES-C代码\Debug\dess.ilk

     文件      23156  2011-06-22 17:18  DES-C代码\Debug\dess.obj

     文件     188660  2011-06-22 17:18  DES-C代码\Debug\dess.pch

     文件     402432  2011-06-22 17:18  DES-C代码\Debug\dess.pdb

     文件      33792  2011-06-23 17:22  DES-C代码\Debug\vc60.idb

     文件      45056  2011-06-22 17:18  DES-C代码\Debug\vc60.pdb

     文件      19642  2011-06-24 15:01  DES-C代码\dess.c

     文件       3371  2011-06-22 17:18  DES-C代码\dess.dsp

     文件        533  2011-06-22 17:18  DES-C代码\dess.dsw

     文件      41984  2011-06-23 17:22  DES-C代码\dess.ncb

     文件      48640  2011-06-23 17:22  DES-C代码\dess.opt

     文件        242  2011-06-23 14:58  DES-C代码\dess.plg

     目录          0  2012-04-08 19:42  DES-C代码\Debug

     目录          0  2012-04-08 19:42  DES-C代码

----------- ---------  ---------- -----  ----

              1193232                    15


评论

共有 条评论