免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6670 | 回复: 11
打印 上一主题 下一主题

这样用md5,为什么打出来的是乱码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-07 14:43 |只看该作者 |倒序浏览
请问大虾们,这样用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;
}

论坛徽章:
0
2 [报告]
发表于 2005-11-07 18:02 |只看该作者
md5  出来的不是字符串,不能用 printf + %s,可以反复用 %x 输出

论坛徽章:
0
3 [报告]
发表于 2005-11-07 19:21 |只看该作者
试了一下
确实如win_hate所说

论坛徽章:
0
4 [报告]
发表于 2006-06-05 15:00 |只看该作者

为什么每次打印的值是不一样的??

我按照你上面的代码做了,运行也正常,但每次运行打印出来的值是不一样的??
这个是为什么啊??

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

论坛徽章:
0
5 [报告]
发表于 2006-06-05 15:12 |只看该作者
急啊!

论坛徽章:
0
6 [报告]
发表于 2006-06-05 15:48 |只看该作者
顶!

论坛徽章:
0
7 [报告]
发表于 2006-06-05 16:10 |只看该作者
哎,MD5什干啥用的?

论坛徽章:
0
8 [报告]
发表于 2006-06-05 16:12 |只看该作者
靠,不知道就别乱贴撒!

论坛徽章:
0
9 [报告]
发表于 2006-06-05 16:28 |只看该作者
靠,还不行学习啊!!~!~

论坛徽章:
0
10 [报告]
发表于 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 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP