谢谢了。问题已解决了。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>
/*修改字符,可加强密码破解难度
直接放全局去了*/
char confidential[32]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f',
'g','h','i','j','k','l','m','n','o','p','q','r','^','&','^',0x00};
/*
*特点:无法解密,比MD5...强。不怕碰撞.
*返回:加密后的字符串
*取得字节的高4位,与低四位(一个0xD6D0==中,GB2312简体中文编码表.
*可以拆分转换成0x0D,0X06,0X0D,0X00).然后进行跳变替换.
*/
char *NZ50(char *str,...)
{
unsigned int i,j,jlen,slen,arglen;
char *copystr,*argvalue;
slen=strlen(str);copystr=(char*)malloc(slen+1);
//复制str+初始化
for(j=0;j<slen;j++)copystr[j]=str[j];
/*提高强度*/
if(slen<16)
{
for(;j<slen && j<32;j++)copystr[j]=confidential[j];
}
copystr[j]=0x00;
/*计算参数的总数*/
for(j=0,arglen=0;j<slen;j++){if(str[j]=='%' && str[j+1]=='s'){arglen++;j++;}}
//先用参数进行加密
if(arglen>0)
{
va_list args;
va_start(args,arglen);
for(i=0;i<arglen;i++)
{
argvalue=va_arg(args,char*);
jlen=strlen(argvalue);
for(j=0;j<jlen;j++)
{
//EncryptAlgorithm(confidential,argvalue[j],j);
}
}
va_end(args);
}
for(j=0;j<slen;j++)
{
//EncryptAlgorithm(confidential,copystr[j],j);
}
printf("%s\n",confidential);//这里都正常了可是
free(copystr);
return confidential;
}
int main()
{
//char *rrr="0000";
char *rrr=NZ50("123456");
int rlen=strlen(rrr);
printf("=%s=\n",rrr);//这里为什么就是乱码了。
putchar('-');
for(int i=0;i<rlen;i++)putchar(rrr[i]);
putchar('-');
}
以前编译过的都不会,不知道这次什么问题。会不会和CPU有关。我是AMD的!大家公测下吧