本人有一个应用需要用到加密,选了王俊川的3des方法,他的调用示例是这样的
char key[]={0,2,0,0,9,3,5,1,9,8,0,0,9,1,7},buf[255]; char str[]="此 readme.txt 文件是随 SQL Server 2000 原版本提供的,"; memset(buf, 0, sizeof(buf));
strcpy(buf, str);
puts("\nBefore encrypting");
puts(buf); Des_Go(buf, buf, sizeof(str), key, sizeof(key), ENCRYPT);
puts("\nAfter encrypting");
puts(buf); Des_Go(buf, buf, sizeof(str), key, sizeof(key), DECRYPT);
puts("\nAfter decrypting");
puts(buf); getchar();但我调用后结果跟它都不一样,不知道为什么,我是这样使用的.
char s1[]="";
UpdateData(true);
strcpy(s1,m_S1.GetBuffer(m_S1.GetLength()+1));  //我怀疑这行有问题,但不知道该怎么弄char key[]={0,2,0,0,9,3,5,1,9,8,0,0,9,1,7},buf[255];
memset(buf, 0, sizeof(buf));
strcpy(buf, s1);
Des_Go(buf, buf, sizeof(s1), key, sizeof(key), ENCRYPT);
m_S2=buf;
其中m_S1,m_S2是文本框,不知道是什么原因,望高手指教,谢谢.

解决方案 »

  1.   

    你的key好像只有15字节,而按照3des的一般用法,key要用16个字节。
      

  2.   

    不一样没关系,关键是你解密出来的要和明文一样,3des的工具网上有好多,调试的时候从网上找一个现成的工具做为辅助。
      

  3.   

    有时候正确,有时候不正确,而且有时候加密了还有很多明文,但用他原来的就不会,不知道有没有dll的,那就最好了.
      

  4.   

    既然是不稳定,是你的程序的问题。char s1[] = "";这写法就有错误,应该是char s1[ 1024 ] = "";才对
      

  5.   

    你可以用crypt lib 提供各种加密方法。