資源簡介
3DES的算法實現,C語言做的。包含了.h文件,可以直接使用。

代碼片段和文件信息
/*?D3DES?(V5.09)?-
?*
?*?A?portable?public?domain?version?of?the?Data?Encryption?Standard.
?*
?*?Written?with?Symantec‘s?THINK?(Lightspeed)?C?by?Richard?Outerbridge.
?*?Thanks?to:?Dan?Hoey?for?his?excellent?Initial?and?Inverse?permutation
?*?code;??Jim?Gillogly?&?Phil?Karn?for?the?DES?key?schedule?code;?Dennis
?*?Ferguson?Eric?Young?and?Dana?How?for?comparing?notes;?and?Ray?Lau
?*?for?humouring?me?on.
?*
?*?Copyright?(c)?19881989199019911992?by?Richard?Outerbridge.
?*?(GEnie?:?OUTER;?CIS?:?[71755204])?Graven?Imagery?1992.
?*/
#include?“d3des.h“
static?void?scrunch(unsigned?char?*?unsigned?long?*);
static?void?unscrun(unsigned?long?*?unsigned?char?*);
static?void?desfunc(unsigned?long?*?unsigned?long?*);
static?void?cookey(unsigned?long?*);
static?unsigned?long?KnL[32]?=?{?0L?};
static?unsigned?long?KnR[32]?=?{?0L?};
static?unsigned?long?Kn3[32]?=?{?0L?};
static?unsigned?char?Df_Key[24]?=?{
0x010x230x450x670x890xab0xcd0xef
0xfe0xdc0xba0x980x760x540x320x10
0x890xab0xcd0xef0x010x230x450x67?};
static?unsigned?short?bytebit[8] =?{
0200?0100?040?020?010?04?02?01?};
static?unsigned?long?bigbyte[24]?=?{
0x800000L 0x400000L 0x200000L 0x100000L
0x80000L 0x40000L 0x20000L 0x10000L
0x8000L 0x4000L 0x2000L 0x1000L
0x800L? 0x400L? 0x200L? 0x100L
0x80L 0x40L 0x20L 0x10L
0x8L 0x4L 0x2L 0x1L };
/*?Use?the?key?schedule?specified?in?the?Standard?(ANSI?X3.92-1981).?*/
static?unsigned?char?pc1[56]?=?{
56?48?40?32?24?16??8 ?0?57?49?41?33?25?17
?9??1?58?50?42?34?26 18?10??2?59?51?43?35
62?54?46?38?30?22?14 ?6?61?53?45?37?29?21
13??5?60?52?44?36?28 20?12??4?27?19?11??3?};
static?unsigned?char?totrot[16]?=?{
124681012141517192123252728?};
static?unsigned?char?pc2[48]?=?{
13?16?10?23??0??4??2?27?14??5?20??9
22?18?11??3?25??7?15??6?26?19?12??1
40?51?30?36?46?54?29?39?50?44?32?47
43?48?38?55?33?52?45?41?49?35?28?31?};
void?deskey(key?edf) /*?Thanks?to?James?Gillogly?&?Phil?Karn!?*/
unsigned?char?*key;
short?edf;
{
register?int?i?j?l?m?n;
unsigned?char?pc1m[56]?pcr[56];
unsigned?long?kn[32];
for?(?j?=?0;?j?56;?j++?)?{
l?=?pc1[j];
m?=?l?&?07;
pc1m[j]?=?(key[l?>>?3]?&?bytebit[m])???1?:?0;
}
for(?i?=?0;?i?16;?i++?)?{
if(?edf?==?DE1?)?m?=?(15?-?i)?<1;
else?m?=?i?<1;
n?=?m?+?1;
kn[m]?=?kn[n]?=?0L;
for(?j?=?0;?j?28;?j++?)?{
l?=?j?+?totrot[i];
if(?l?28?)?pcr[j]?=?pc1m[l];
else?pcr[j]?=?pc1m[l?-?28];
}
for(?j?=?28;?j?56;?j++?)?{
????l?=?j?+?totrot[i];
????if(?l?56?)?pcr[j]?=?pc1m[l];
????else?pcr[j]?=?pc1m[l?-?28];
????}
for(?j?=?0;?j?24;?j++?)?{
if(?pcr[pc2[j]]?)?kn[m]?|=?bigbyte[j];
if(?pcr[pc2[j+24]]?)?kn[n]?|=?bigbyte[j];
}
}
cookey(kn);
return;
}
static?void?cookey(raw1)
register?unsig
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????20793??1998-02-25?23:04??3DES_Source\d3des.c
?????文件???????4602??1998-02-25?23:04??3DES_Source\d3des.h
?????文件??????????0??2009-04-16?01:51??3DES_Source\longdouble.com.txt
?????目錄??????????0??2009-04-16?01:51??3DES_Source
-----------?---------??----------?-----??----
????????????????25395????????????????????4
- 上一篇:libx264最新穩定版本附WINDOWS下編譯步驟
- 下一篇:AES加密可加密文件
評論
共有 條評論