关于 调用MD5 函数 的方法!

svcce 2012-05-30 07:13:00
http://topic.csdn.net/u/20080304/21/d767340f-42ec-419e-bd26-684cd3386863.html

我在这个帖子找到了这个MD5加密算法!

但是我怎么调用都调用不到!

我是新手,第一次用bcb 希望大家告诉我,怎么在其他窗体调用MD5 的方法!
...全文
394 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
v1srine 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
汗一个
当初我需要用md5的时候就用的lz那个帖子里面的代码,不过不是在这里找的。
那个md5的算法有个小错误。

C/C++ code

// 原函数
HString HMD5::MD5(HString MD5Str)
{
int vLen = MD5Str.Length() ;
char *tmp1, *tmp2 ;
tmp1 = new char[vLen]……
[/Quote]

谢谢,我更改了,但是我现在还不会调用!
v1srine 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
那个代码已经很详细了啊,你建一个单元,分别把.cpp和.h中的内容复制进去,在其他单元中包含这个MD5.H头文件,然后用HMD5的方法就行了:
HMD5 md5;
ShowMessage(md5.MD5("要计算哈希值的字符串"));

另外需要补充一下,MD5并不是加密算法,应该算校验算法的范畴。
[/Quote]
Checking project dependencies...
Compiling Client.cbproj (Debug configuration)
[BCC32 Error] Ulogin.cpp(63): E2451 Undefined symbol 'HMD5'
Full parser context
Ulogin.cpp(53): parsing: void _fastcall TFlogin::BitBtn1Click(TObject *)
[BCC32 Error] Ulogin.cpp(63): E2379 Statement missing ;
Full parser context
Ulogin.cpp(53): parsing: void _fastcall TFlogin::BitBtn1Click(TObject *)
[BCC32 Error] Ulogin.cpp(64): E2451 Undefined symbol 'md5'
Full parser context
Ulogin.cpp(53): parsing: void _fastcall TFlogin::BitBtn1Click(TObject *)
[BCC32 Error] Ulogin.cpp(99): E2096 Illegal structure operation
Full parser context
Ulogin.cpp(53): parsing: void _fastcall TFlogin::BitBtn1Click(TObject *)
Failed
Elapsed time: 00:00:00.4


-------------------------------------------------------
头文件也添加了,
跟你用的一样!就是不行!
hemiya 2012-05-30
  • 打赏
  • 举报
回复
汗一个
当初我需要用md5的时候就用的lz那个帖子里面的代码,不过不是在这里找的。
那个md5的算法有个小错误。

// 原函数
HString HMD5::MD5(HString MD5Str)
{
int vLen = MD5Str.Length() ;
char *tmp1, *tmp2 ;
tmp1 = new char[vLen];
tmp2 = new char[100];
strcpy(tmp1,MD5Str.c_str());
//tmp2 = GetMD5OfStr(tmp1, vLen, tmp2); 二种方法一样
GetMD5OfStr(tmp1, vLen, tmp2);
HString MD5STR = (HString)(tmp2);
delete[] tmp1, tmp2 ;
return MD5STR ;
}

// 我自己修改后的函数
HString __fastcall MD5::MD5(HString MD5Str)
{
int vLen = MD5Str.Length() ;
char *tmp1, *tmp2 ;
tmp1 = new char[vLen];
tmp2 = new char[100];

// 原始代码有指针错误,原因不明,用下面替换后正常。
// 估计是strcpy在目的字符串结尾加'\0'字符引起的错误
// 由于tmp1大小等于MD5Str字符大小没有包括'\0'字符
// 所以用strcpy字符串复制函数不正确。
//strcpy(tmp1,MD5Str.c_str());

// 替换strcpy
const char *p = MD5Str.c_str();
for (int i=0; *(p+i) != NULL; i++)
{
*(tmp1+i) = *(p+i);
}
// 替换strcpy

//tmp2 = GetMD5OfStr(tmp1, vLen, tmp2); 二种方法一样(原注释)
GetMD5OfStr(tmp1, vLen, tmp2);
HString MD5STR = (HString)(tmp2);
delete []tmp1;
delete []tmp2;
return MD5STR ;
}


其实上面加注释的地方现在来看应该用memcpy函数就简单了

更汗一下,看了一下我改后的md5类文件,看到这行

// 2008-07-24 创建

时间过的真快
ccrun.com 2012-05-30
  • 打赏
  • 举报
回复
那个代码已经很详细了啊,你建一个单元,分别把.cpp和.h中的内容复制进去,在其他单元中包含这个MD5.H头文件,然后用HMD5的方法就行了:
HMD5 md5;
ShowMessage(md5.MD5("要计算哈希值的字符串"));

另外需要补充一下,MD5并不是加密算法,应该算校验算法的范畴。
dataxdata 2012-05-30
  • 打赏
  • 举报
回复
大概是这样的用法
#include "md5.h"

func() {
.......
HMD5 md5;

char *szInputStr = "1234567890"; // 输入字符串
int nInputLen = 10; // 输入字符串的长度
char szMd5[33]; // 存放返回的MD5值
md5.GetMD5OfStr(szInputStr, nInputLen, szMd5);

......
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧