花生壳客户端实现

上传人:子 文档编号:42311746 上传时间:2018-06-01 格式:DOC 页数:25 大小:52.50KB
返回 下载 相关 举报
花生壳客户端实现_第1页
第1页 / 共25页
花生壳客户端实现_第2页
第2页 / 共25页
花生壳客户端实现_第3页
第3页 / 共25页
花生壳客户端实现_第4页
第4页 / 共25页
花生壳客户端实现_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《花生壳客户端实现》由会员分享,可在线阅读,更多相关《花生壳客户端实现(25页珍藏版)》请在金锄头文库上搜索。

1、花生壳客户端实现花生壳客户端实现花生壳 linux 客户端源码(简易版)2006-10-25 14:41:58| 分类: Linux | 标签:linux 服务器 |字号大中小 订阅 .花生壳 linux 客户端源码(简易版) 作者: lizhx 新手上路(IPLogged)日期: 2006-09-07 22:30:47原创花生壳 linux 客户端源码(简易版) 花生壳很受欢迎! 像我这样没有固定 IP 的人,实在是没有办法,只好请花生壳帮忙。 又像我如此节约的人,又不能开着电脑当服务器,随便找个开发板就好了,不到五瓦。 花生壳的 linux 版客户端,也不是没有,就是不能在 ARM LIN

2、UX 下运行。 实在无奈之下,就写了这么一个程序,纯粹个人爱好。不好用,自己改改。 md5.h /* typedef a 32 bit type */ typedef unsigned long int UINT4; /* Data structure for MD5 (Message Digest) computation */ typedef struct UINT4 i2; /* number of _bits_ handled mod 264 */ UINT4 buf4; /* scratch buffer */ unsigned char in64; /* input buffer

3、*/ unsigned char digest16; /* actual digest after MD5Final call */ MD5_CTX; void MD5Init (MD5_CTX *mdContext); void MD5Update (MD5_CTX *mdContext,unsigned char *inBuf,unsigned int inLen); void MD5Final (unsigned char *digest,MD5_CTX *mdContext); void Transform (UINT4 *buf,UINT4 *in); void hmac_md5 (

4、unsigned char *text,int text_len,unsigned char * key,int key_len,unsigned char * digest); const char BaseTable65=“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=“; char * DecodeBase64(char * Source); char * EncodeBase64(char * Source); unsigned char FindInTable(unsigned char); /- s

5、tatic unsigned char PADDING64 = 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

6、, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; /* F, G and H are basic MD5 functions: selection, majority, parity */ #define F(x, y, z) (x) (a) = ROTATE_LEFT (a), (s); (a) += (b); #define GG(a, b, c, d, x, s, ac) (a) += G (b), (c)

7、, (d) + (x) + (UINT4)(ac); (a) = ROTATE_LEFT (a), (s); (a) += (b); #define HH(a, b, c, d, x, s, ac) (a) += H (b), (c), (d) + (x) + (UINT4)(ac); (a) = ROTATE_LEFT (a), (s); (a) += (b); #define II(a, b, c, d, x, s, ac) (a) += I (b), (c), (d) + (x) + (UINT4)(ac); (a) = ROTATE_LEFT (a), (s); (a) += (b);

8、 /- void MD5Init (MD5_CTX * mdContext) mdContext-i0 = mdContext-i1 = (UINT4)0; /* Load magic initialization constants. */ mdContext-buf0 = (UINT4)0x67452301; mdContext-buf1 = (UINT4)0xefcdab89; mdContext-buf2 = (UINT4)0x98badcfe; mdContext-buf3 = (UINT4)0x10325476; /- void MD5Update (MD5_CTX *mdCont

9、ext, unsigned char *inBuf, unsigned int inLen) UINT4 in16; int mdi; unsigned int i, ii; /* compute number of bytes mod 64 */ mdi = (int)(mdContext-i0 3) /* update number of bits */ if (mdContext-i0 + (UINT4)inLen i0) mdContext-i1+; mdContext-i0 += (UINT4)inLen i1 += (UINT4)inLen 29); while (inLen-)

10、/* add new character to buffer, increment mdi */ mdContext-inmdi+ = *inBuf+; /* transform if necessary */ if (mdi = 0x40) for (i = 0, ii = 0; i inii+3) inii+2) inii+1) inii); Transform (mdContext-buf, in); mdi = 0; /- void MD5Final(unsigned char *digest,MD5_CTX *mdContext) UINT4 in16; int mdi; unsig

11、ned int i, ii; unsigned int padLen; /* save number of bits */ in14 = mdContext-i0; in15 = mdContext-i1; /* compute number of bytes mod 64 */ mdi = (int)(mdContext-i0 3) /* pad out to 56 mod 64 */ padLen = (mdi inii+3) inii+2) inii+1) inii); Transform (mdContext-buf, in); /* store buffer in digest */

12、 for (i = 0, ii = 0; i digestii = (unsigned char)(mdContext-bufi mdContext-digestii+1 = (unsigned char)(mdContext-bufi 8) mdContext-digestii+2 = (unsigned char)(mdContext-bufi 16) mdContext-digestii+3 = (unsigned char)(mdContext-bufi 24) memcpy(digest,mdContext-buf,16); /- /* Basic MD5 step. Transfo

13、rm buf based on in. */ void Transform (UINT4 *buf, UINT4 *in) UINT4 a = buf0, b = buf1, c = buf2, d = buf3; /* Round 1 */ #define S11 7 #define S12 12 #define S13 17 #define S14 22 FF ( a, b, c, d, in 0, S11, 3614090360UL); /* 1 */ FF ( d, a, b, c, in 1, S12, 3905402710UL); /* 2 */ FF ( c, d, a, b,

14、in 2, S13, 606105819UL); /* 3 */ FF ( b, c, d, a, in 3, S14, 3250441966UL); /* 4 */ FF ( a, b, c, d, in 4, S11, 4118548399UL); /* 5 */ FF ( d, a, b, c, in 5, S12, 1200080426UL); /* 6 */ FF ( c, d, a, b, in 6, S13, 2821735955UL); /* 7 */ FF ( b, c, d, a, in 7, S14, 4249261313UL); /* 8 */ FF ( a, b, c, d, in 8, S11, 1770035416UL); /* 9 */ FF ( d, a, b, c, in 9, S12, 2336552879UL); /* 10 */ FF ( c, d, a, b, in10, S13, 4294925233UL); /* 11 */ FF ( b, c, d, a, in11, S14, 230456313

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号