Chinaunix

标题: 这样用md5,为什么打出来的是乱码 [打印本页]

作者: xxbview    时间: 2005-11-07 14:43
标题: 这样用md5,为什么打出来的是乱码
请问大虾们,这样用md5,为什么打出来的是乱码?

#include <stdio.h>
#include <sys/types.h>
#include <md5.h>

int main(void)
{
        unsigned char tk[16];

        const char *key="abc";
        int key_len=strlen(key);

        MD5_CTX      tctx;

        MD5Init(&tctx);
        MD5Update(&tctx,(unsigned char*) key, key_len);
        MD5Final(tk, &tctx);

        printf("%sn", tk);

        return 0;
}
作者: win_hate    时间: 2005-11-07 18:02
md5  出来的不是字符串,不能用 printf + %s,可以反复用 %x 输出
作者: bleem1998    时间: 2005-11-07 19:21
试了一下
确实如win_hate所说
作者: shineyear    时间: 2006-06-05 15:00
标题: 为什么每次打印的值是不一样的??
我按照你上面的代码做了,运行也正常,但每次运行打印出来的值是不一样的??
这个是为什么啊??

  1. bfffa1c0n
  2. bfff9240n
  3. bfffc490n
  4. bfffb540n
  5. bfffd620n
复制代码

作者: shineyear    时间: 2006-06-05 15:12
急啊!
作者: shineyear    时间: 2006-06-05 15:48
顶!
作者: sunnyboy0819    时间: 2006-06-05 16:10
哎,MD5什干啥用的?
作者: shineyear    时间: 2006-06-05 16:12
靠,不知道就别乱贴撒!
作者: sunnyboy0819    时间: 2006-06-05 16:28
靠,还不行学习啊!!~!~
作者: isnowran    时间: 2006-06-05 16:33

  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <openssl/md5.h>

  6. int HexChange(const unsigned char* pcBuf, unsigned char* cStore, unsigned int iLen)
  7. {
  8.         for( unsigned int i = 0; i < iLen; i++ )
  9.         {
  10.                 sprintf( (char*)(&cStore[i*2]), "%02x", *(pcBuf + i) );
  11.         }

  12.         return 0;
  13. }

  14. int main(void)
  15. {
  16.         unsigned char tk[36];
  17.         const char *key="abc";
  18.         int key_len=strlen(key);

  19.         MD5_CTX      tctx;
  20.         MD5_Init(&tctx);
  21.         MD5_Update(&tctx,(unsigned char*) key, key_len);
  22.         MD5_Final(tk, &tctx);

  23.         unsigned char cBuf[1024];
  24.         bzero( cBuf, sizeof( cBuf ) );
  25.         HexChange( tk, cBuf, 16 );
  26.         printf( "%s\n", cBuf );
  27.         return 0;
  28. }
复制代码


再急也要把字写对了,

  1.      MD5Init(&tctx);
  2.      MD5Update(&tctx,(unsigned char*) key, key_len);
  3.      MD5Final(tk, &tctx);
复制代码

你的机器上有上述三个函数么?

[ 本帖最后由 isnowran 于 2006-6-5 16:36 编辑 ]
作者: isnowran    时间: 2006-06-05 16:41
原帖由 shineyear 于 2006-6-5 16:12 发表
靠,不知道就别乱贴撒!

另: 既然是自己问问题, 最好礼貌一点, sunnyboy0819 即使没有直接帮你解决问题, 也是帮你把帖子顶起来间接帮助你的朋友, 你的态度太恶劣了...

[ 本帖最后由 isnowran 于 2006-6-5 16:44 编辑 ]
作者: 源方    时间: 2006-06-06 13:41
原帖由 isnowran 于 2006-6-5 16:41 发表

另: 既然是自己问问题, 最好礼貌一点, sunnyboy0819 即使没有直接帮你解决问题, 也是帮你把帖子顶起来间接帮助你的朋友, 你的态度太恶劣了...

说的对




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2