读书人

新手MD5的使用有关问题

发布时间: 2012-02-20 21:18:24 作者: rapoo

新手,急:MD5的使用问题
我是新手,在网上找到MD5算法的实现:http://www.jonline.cn/program/Delphi/2006-03-12/WkGvs.html,
请教高人,如何调用这个算法,如何实现加密、解密操作(指调用)?

急!谢谢啦!

[解决办法]
在你的程序里Uses他的pas文件,然后直接调用加密函数即可,我找的是function RivestStr(Str: String): string;没有解密函数
[解决办法]
你等下,我找个我自己用过的给你
[解决办法]
MD5 是不可逆的。不能解密。
[解决办法]
MD5? 具体的你看你MD5加密的那单元啦

确实不能解密 ~~
[解决办法]
另外的加密解密我给你个函数好了


//加密
function EncrypKey(sSrc:string; sKey: string= ' '): string;
const
sHex: array[0..15] of Char =
( '0 ', '1 ', '2 ', '3 ', '4 ', '5 ', '6 ', '7 ', '8 ', '9 ', 'A ', 'B ', 'C ', 'D ', 'E ', 'F ');
var
iKeyLen, iKeyPos, iOffset, iSrcPos, iSrcAsc: Integer;
function IntToHexStr(iNum: Integer): string;
begin
Result := sHex[iNum div 16] + sHex[iNum mod 16];
end;
begin
try
if sSrc = ' ' then Exit;
if sKey = ' ' then sKey := 'TonyNetmarchTrackRevision ';
iKeyLen := Length(sKey);
iKeyPos := 0;
Randomize;
iOffset := Random(256);
Result := IntToHexStr(iOffset);
for iSrcPos := 1 to Length(sSrc) do
begin
iSrcAsc := (Ord(sSrc[iSrcPos]) + iOffset) mod 255;
if iKeyPos < iKeyLen then
Inc(iKeyPos)
else
iKeyPos := 1;
iSrcAsc := iSrcAsc xor Ord(sKey[iKeyPos]);
Result := Result + IntToHexStr(iSrcAsc);
iOffset := iSrcAsc;
end;
except
end;
end;
//解密
function UncrypKey(sSrc:string; sKey: string= ' '): string;
var
iKeyLen, iKeyPos, iOffset, iSrcPos, iSrcAsc, iTmpSrcAsc: Integer;
begin
if sSrc = ' ' then Exit;
if sKey = ' ' then sKey := 'TonyNetmarchTrackRevision ';
iKeyLen := Length(sKey);
iKeyPos := 0;
iOffset := StrToInt( '$ ' + Copy(sSrc, 1, 2));
iSrcPos := 3;
repeat
iSrcAsc := StrToInt( '$ ' + Copy(sSrc, iSrcPos, 2));
if iKeyPos < iKeyLen then
Inc(iKeyPos, 1)
else
iKeyPos := 1;
iTmpSrcAsc := iSrcAsc xor Ord(sKey[iKeyPos]);
if iTmpSrcAsc <= iOffset then
Inc(iTmpSrcAsc, 255 - iOffset)
else
Dec(iTmpSrcAsc, iOffset);
Result := Result + Chr(iTmpSrcAsc);
iOffset := iSrcAsc;
Inc(iSrcPos, 2);
until iSrcPos > = Length(sSrc);
end;

读书人网 >.NET

热点推荐