当前位置:我的异常网» 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);
文章评论