用c语言编程添加英雄属性,英雄贴解决思路

当前位置:我的异常网» C语言 » 英雄贴解决思路

英雄贴解决思路

www.myexceptions.net  网友分享于:2013-04-14  浏览:4次

英雄贴

英雄贴

各位英雄,各路好汉,堂堂中华,群英毕集,小弟一向不得识荆,深以为憾。现小弟想对Blowfish加密算法进行一些改进,苦于无从下手,望各位大侠不吝赐教,给出一点思路。感激涕零!

江湖后进       拜上

------解决方案--------------------

我自己写的加密算法,呵呵.

unsigned int HtoD(char ch);

char * mia(char *bufstr,const char *passstr,unsigned int lenbufstr,unsigned int lenpassstr);

char * mie(char *bufstr,const char *passstr,unsigned int lenbufstr,unsigned int lenpassstr)

这里我定义了三个过程函数,第一个是数值转化,第二,三,是加密和解密用,用一个加密,用另一个解密就可以了.

这里我用的是C语言的内存申请,没有写申请验证.

一次性加密数据长度:unsigned int

支持密码长度:unsigned int

//\\\\\\\\\\\\\\\\\\\\\\\\\//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

#include

#include

#include

unsigned int HtoD(char ch)

{

if (ch > = '0 ' && ch <= '9 ')

return(ch - '0 ');

if (ch > = 'A ' && ch <= 'F ')

return(ch - 'A ' + 0xA);

if (ch > = 'a ' && ch <= 'f ')

return (ch - 'a ' + 0xA);

return 16;

}

char * mia(char *bufstr,const char *passstr,unsigned int lenbufstr,unsigned int lenpassstr){

char *buf1=(char *)malloc(lenbufstr+17);

char *buf2=(char *)malloc(lenbufstr+17);

char *buf4=(char *)malloc(lenpassstr*2);

memset(buf1,0,lenbufstr+17);

memset(buf2,0,lenbufstr+17);

memset(buf4,0,lenpassstr*2);

for(unsigned int i=0;i

{

char buf[3];

memset(buf,0,3);

sprintf(buf, "%02x ",(unsigned char)(bufstr[i]));

buf1[i]=buf[0];

buf2[i]=buf[1];

}

for(unsigned int i=0,j=0;i

{

sprintf((buf4+i*2), "02x ",(unsigned char)(passstr[i])); //“低”地址方式寻址的。

}

for( unsigned int i=0;i

{

unsigned int op=HtoD(buf4[i]);

if(op> lenbufstr)

{

//。。。。。。。。。。。。。

}else if(op==lenbufstr||op==0)

{

//。。。。。。。。。。。。。

}

else

{

for( unsigned int k=lenbufstr-1;k> =0;k--)

{

buf2[k+op]=buf2[k];

}

for(unsigned int j=0;j

{

buf2[j]=buf1[j];

}

for( unsigned int m=op;m

{

buf1[m-op]=buf1[m];

}

for( unsigned int n=lenbufstr;n

{

buf1[n-op]=buf2[n];

//buf2[n]=0;

}

}

}

for(unsigned int i=0;i

{

bufstr[i]=(HtoD(buf1[i])*16+HtoD(buf2[i]));

}

free(buf1);

free(buf2);

free(buf4);

return bufstr;

}

char * mie(char *bufstr,const char *passstr,unsigned int lenbufstr,unsigned int lenpassstr)

{

char *buf1=(char *)malloc(lenbufstr+17);

char *buf2=(char *)malloc(lenbufstr+17);

char *buf4=(char *)malloc(lenpassstr*2);

memset(buf1,0,lenbufstr+17);

memset(buf2,0,lenbufstr+17);

文章评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值