我在写一个登陆的窗口程序,需要将获得的密码采用DES加密之后,存到数据库上面,在下次登陆的时候,到数据库上面通过对比输入的用户名和密码来确认是否可以让该用户登陆。
我的DES加密之后,输出的是8个字节的二进制码,但是存入数据库的是字符串,所以是乱码,不知道有没有别的存入办法。
对比的时候,可能寸入就有问题了,不知道该怎么办了,望高手解答,不甚感谢!~

解决方案 »

  1.   

    用memcmp对比
      

  2.   

    memcmp是在内存中的吧,我要和数据库表里的数据对比,你的意思是从数据库中读出,然后在本地对比?
      

  3.   

    我尝试了MD5,不过对于其研究比较少,不知道silenker兄可否贴一段代码出来,MD5加密的算法我已经有封装好的,就是不知道在写入数据库和从数据库中读取对比时要如何写,不甚感谢!~
      

  4.   

    用memcmp对比,用户输入口令加密后的数据与从数据库中读出来的数据进行比较,如果相同表示用户输入的口令正确
      

  5.   


    不好意思的说,我手里并没有相关的代码^^不过对比的话,因为是字符串格式的,所以只要使用字符串对比函数就可以了吧,strcmp()或者string.compare()之类的。
    存入数据库之前一定要注意把二进制数据格式化输出为字符串,比如十进制的92897327973343479这样,这样就不会有乱码了。
      

  6.   

    唉,就是不知道怎么转啊,我也想把char型转成十六进制的,就是不知道怎么弄。
      

  7.   

    整数转字符串的:
    char buff[32];
    int n=123;
    int base=16; //十进制或者16进制
    itoa(n,buff,base); //将n转换为指定进制的字符串
      

  8.   

    呵呵,谢谢你的回复了,我是用C++写的,没有itoa这个方法。
    我仔细说明下我的输出吧,输出是char型,但是是乱码,用UE打开,换成16进制的话就是16进制的,所以我就很疑惑,puzzle。
    不知道到底该怎么处理,唉!~
    譬如:char是这样
    繁L帧:髽
    换成16进制就是
    B7 B1 4C D6 A1 3A F3 98。