《花生壳客户端实现》由会员分享,可在线阅读,更多相关《花生壳客户端实现(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