|
发表于 2010-12-4 14:18:20
|
显示全部楼层
我找到网上公布的算法了
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- void EnCode(char* lpstr);
- int main()
- {
- char str[128]="";
- char ch;
- printf("河南网通用户名转换工具\[email protected]\n请输入用户名:\n");
- scanf("%s",str);
- EnCode(str);
- printf("真实的登录账户为:\n2:%s\n",str);
- return 0;
- }
- void EnCode(char* lpstr)
- {
- char cas_str[]="9012345678abcdeABCDEFGHIJKLMNfghijklmnUVWXYZxyzuvwopqrstOPQRST";
- int cas_str_buffer[16];
- int cas_esi = 37;
- char src_str[128]="",dec_str[128]="";
- int k=0;
- int cas_eax,cas_edx;
- div_t x;
- unsigned int i,j;
- cas_str_buffer[15]=25;
- cas_str_buffer[14]=35;
- cas_str_buffer[13]=182;
- cas_str_buffer[12]=236;
- cas_str_buffer[11]=43;
- cas_str_buffer[10]=41;
- cas_str_buffer[9]=53;
- cas_str_buffer[8]=18;
- cas_str_buffer[7]=226;
- cas_str_buffer[6]=215;
- cas_str_buffer[5]=24;
- cas_str_buffer[4]=117;
- cas_str_buffer[3]=35;
- cas_str_buffer[2]=201;
- cas_str_buffer[1]=52;
- cas_str_buffer[0]=17;
- strcpy(src_str,lpstr);
- for ( i=0;i<strlen(src_str);i++)
- {
- for(j=0;j<strlen(cas_str);j++)
- {
- if (src_str[i]==cas_str[j])
- {
- if(i<16) cas_eax=cas_str_buffer[i];
- else
- {
- x=div(i,16);
- cas_eax=cas_str_buffer[x.rem] ;
- }
- cas_edx=cas_esi+cas_esi*2 ;
- cas_eax=cas_eax^cas_edx;
- cas_eax=cas_eax^k;
- cas_eax=cas_eax+j;
- x = div(cas_eax,62);
- dec_str[i]=cas_str[x.rem];
- cas_edx=x.rem ;
- cas_esi=cas_esi^(cas_edx+9433);
- break;
- }
- }
- if(dec_str[i]==NULL)
- dec_str[i]=src_str[i];
- k=k+5;
- }
- strcpy(lpstr,dec_str);
- }
复制代码 |
|