ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:18.65KB ,
资源ID:18796929      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18796929.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DES加密算法Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DES加密算法Word文件下载.docx

1、failed. int encrypt ( char key8, char* data, int blocks = 1 ); int decrypt ( char key8, char* data, int blocks = 1 ); / Encrypt/decrypt any size data,according to a special method. / Before calling yencrypt, copy data to a new buffer with size / calculated by extend. int yencrypt ( char key8, char*

2、data, int size ); int ydecrypt ( char key8, char* in, int blocks, int* size = 0 ); int extend ( int size ) return (size/8+1)*8; ;private: void des(unsigned char* in, unsigned char* out, int blocks); void des_block(unsigned char* in, unsigned char* out); unsigned long KnL32; enum Mode ENCRYPT, DECRYP

3、T ; void deskey(unsigned char key8, Mode md); void usekey(unsigned long *); void cookey(unsigned long *); void scrunch(unsigned char *, unsigned long *); void unscrun(unsigned long *, unsigned char *); void desfunc(unsigned long *, unsigned long *); static unsigned char Df_Key24; static unsigned sho

4、rt bytebit8; static unsigned long bigbyte24; static unsigned char pc156; static unsigned char totrot16; static unsigned char pc248; static unsigned long SP164; static unsigned long SP264; static unsigned long SP364; static unsigned long SP464; static unsigned long SP564; static unsigned long SP664;

5、static unsigned long SP764; static unsigned long SP864;#endif #include #include des.hint DES:encrypt ( char key8, char* data, int blocks ) if (!data)|(blocks1) return 0; deskey ( key, ENCRYPT ); des ( data, data, blocks); return 1;decrypt ( char key8, char* data, int blocks ) deskey ( key, DECRYPT )

6、;yencrypt ( char key8, char* data, int size ) data)|(size / The last char of data is bitwise complemented and filled the rest / buffer.If size is 16, it will extend to 24,and 17 still 24. char lastChar = *(data+size-1); int blocks = size/8+1; memset (data+size, lastChar, blocks*8-size); return encry

7、pt ( data, data, blocks);ydecrypt ( char key8, char* data, int blocks, int* size ) if ( (!data) | (blocks0)&(datapos=endChar) pos-; if ( datapos != endChar ) *size = pos+1; / - / des / Encrpts/Decrypts(according to the key currently loaded int the / internal key register) SOME blocks of eight bytes

8、at address in/ into the block at address out. They can be the same. / / inoutblock Number of blocks. void DES:des ( unsigned char* in, unsigned char* out, int blocks ) for (int i = 0; i blocks; i+,in+=8,out+=8) des_block(in,out);/ des_block / internal key register) one block of eight bytes at addres

9、s des_block(unsigned char *in, unsigned char *out) unsigned long work2; scrunch(in, work); desfunc(work, KnL); unscrun(work, out); / - / deskey / Sets the internal key register (KnR) according to the hexadecimal / key contained in the 8 bytes of hexkey, according to the DES, / for encryption or decr

10、ytion according to MODE is the 64 bits key. md means encryption or decryption. deskey(unsigned char key8, Mode md) /* Thanks to James Gillogly &am p; Phil Karn! */ register int i, j, l, m, n; unsigned char pc1m56, pcr56; unsigned long kn32; for (j = 0; j 3 & bytebitm) ? 1:0; for (i = 0; 16; i+) if (

11、md = DECRYPT) m = (15 - i) 1; else m = i n = m + 1; knm = knn = 0L; 28; l = j + totroti; if (l 28) pcrj = pc1ml; else pcrj = pc1ml - 28; for (j = 28; 56) pcrj = pc1ml; 24; if (pcr pc2j ) knm |= bigbytej; if (pcr pc2j+24 ) knn |= bigbytej; cookey(kn); return;/ cookey / Only called by deskey. cookey(r

12、egister unsigned long *raw1) register unsigned long *cook, *raw0; unsigned long dough32; register int i; cook = dough; i+, raw1+) raw0 = raw1+; *cook = (*raw0 & 0x00fc0000L) 6; *cook |= (*raw0 & 0x00000fc0L) *cook+ |= (*raw1 & 0x00000fc0L) 0x0003f000L) 12; 0x0000003fL) 4; 0x0000003fL); usekey(dough)

13、;/ usekey / Only called by cookey. / Loads the interal key register with the data in cookedkey. usekey(register unsigned long *from) register unsigned long *to, *endp; to = KnL, endp = &KnL32; while (to endp) *to+ = *from+;scrunch(register unsigned char *outof, register unsigned long *int o ) *into

14、= (*outof+ & 0xffL) 24) & 0xffL; 16) & 8) & *into+ = *outof+ & *into = *outof &desfunc(register unsigned long *block,register unsigned long *keys ) register unsigned long fval, work, right, leftt; register int round; leftt = block0; right = block1; work = (leftt 4) right) & 0x0f0f0f0fL; right = work

15、; leftt = (work 2) leftt) & 0x33333333L; leftt = work; right = (work 2); 8) leftt) & 0x00ff00ffL; 8); right = (right 31) & 1L) & 0xffffffffL; work = (leftt right) & 0xaaaaaaaaL; leftt = (leftt for (round = 0; round round+) work = (right work = *keys+; fval = SP7work & 0x3fL; fval |= SP5(work fval |=

16、 SP3(work fval |= SP1(work work = right *keys+; fval |= SP8work & fval |= SP6(work fval |= SP4(work fval |= SP2(work leftt = fval; work = (leftt work = leftt *keys+; right = fval; right = (right 1); leftt = (leftt 8) right) & 2) right) & 16) leftt) & 4) leftt) & *block+ = right; *block = leftt;/ Initial of static data members. These data will be used by all the / in

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1