Delphi2010 MD5如何与C# md5相匹配

adamzzww 2010-08-27 04:11:37
如题,相同的123,C#程序调用md5加密后为32位:202CB962AC59075B964B07152D234B70;
delphi2010自带MD5加密方法 对123加密后,完全不同;
使用:
http://topic.csdn.net/u/20100117/20/7d116c49-0b86-4783-b90e-5b5ad6df26d7.html
这个帖子的MD5加密方法也不同。
多谢各位解答,先。。
...全文
260 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
adamzzww 2010-08-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 maozefa 的回复:]
试试我的BLOG代码:

http://blog.csdn.net/maozefa/archive/2007/06/15/1653560.aspx
[/Quote]
弱弱的问,如何使用的?
adamzzww 2010-08-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tataishan 的回复:]
此贴已回复 楼主可测试下我发的代码
[/Quote]
谢谢,呃,可是。。可是。。
代码您发在哪里了?
adamzzww 2010-08-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 caibirdy 的回复:]
汗,楼主搞错了,
202CB962AC59075B964B07152D234B70;是16位的字符串表示,MD5标准都是16位。
[/Quote]
呃,不好意思,我不太明白,能麻烦解释下么,我谷歌没搜到。(菜鸟中)
Seamour 2010-08-28
  • 打赏
  • 举报
回复
advapi32 给的 md5 效率已经非常高了,不内嵌汇编的话 delphi 编译器弄不出效率不更低的来,.net 用的也是 advapi32,所以就没必要再造轮子了

type
TMD5dig = record
Digest : array[0..3]of LongWord;
function ToString: string;
end;

TAdv32MD5 = record
TotalSize : Int64;
buffDigest : array[0..3]of LongWord;
buffInput : array[0..63]of Byte;
digest : TMD5dig;

constructor Create(const Buffer; Size: LongWord);
procedure Hash(const Buffer; Size: LongWord);
class function MD5(const Buffer; Size: LongWord): TMD5dig; static;

procedure Initialize; stdcall;
procedure Update(const Buffer; Size: LongWord); stdcall;
procedure FinalDigest; stdcall;
end;

const
AdvApi32 = 'AdvApi32.dll';

{ TMD5dig }

function TMD5dig.ToString: string;
const HexChars : array[0..15]of Char = '0123456789ABCDEF';
var
i, b : LongWord;
pSrc : PAnsiChar;
pDst : PChar;
begin
SetLength(Result, 32);
pDst := Pointer(Result);
pSrc := @Self;
for i:=0 to 15 do
begin
b := Ord(pSrc[i]);
pDst[i*2+0] := HexChars[b shr $4];
pDst[i*2+1] := HexChars[b and $f];
end;
end;

{ TAdv32MD5 }

constructor TAdv32MD5.Create(const Buffer; Size: LongWord);
begin
Initialize;
Update(Buffer, Size);
end;

procedure TAdv32MD5.FinalDigest;
external AdvApi32 name 'MD5Final';

procedure TAdv32MD5.Hash(const Buffer; Size: LongWord);
begin
Initialize;
Update(Buffer, Size);
FinalDigest;
end;

procedure TAdv32MD5.Initialize;
external AdvApi32 name 'MD5Init';

class function TAdv32MD5.MD5(const Buffer; Size: LongWord): TMD5dig;
var tmp: TAdv32MD5;
begin
tmp.Hash(Buffer, Size);
Result := tmp.digest;
end;

procedure TAdv32MD5.Update(const Buffer; Size: LongWord);
external AdvApi32 name 'MD5Update';
阿发伯 2010-08-28
  • 打赏
  • 举报
回复
试试我的BLOG代码:

http://blog.csdn.net/maozefa/archive/2007/06/15/1653560.aspx
tataishan 2010-08-28
  • 打赏
  • 举报
回复
此贴已回复 楼主可测试下我发的代码
CaiBirdy 2010-08-27
  • 打赏
  • 举报
回复
汗,楼主搞错了,
202CB962AC59075B964B07152D234B70;是16位的字符串表示,MD5标准都是16位。
adamzzww 2010-08-27
  • 打赏
  • 举报
回复
顶一下,麻烦知道的帮忙解决,不知道的也帮忙顶下贴。谢谢..

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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