用delphi实现qq在Web登录的密码客户端加密功能.

本文介绍了一种使用TIdHashMessageDigest5组件进行三次MD5哈希运算并结合验证码的密码预处理加密方法。该方法首先对原始密码进行MD5哈希处理,然后将结果与验证码拼接再进行两次额外的MD5哈希处理,最后返回加密后的字符串。

使用到TIdHashMessageDigest5.

uses IdHashMessageDigest;

function Preprocess(aPassWord, aVerifyCode:string):string;
begin
     Result:= Fmd5(md5_3(aPassWord) + UpperCase(aVerifyCode));
end;

function md5_3(str:string):string;
begin
     Result:= Fmd5(str);
     Result:= HashStr2BinStr(Result);
     Result:= Fmd5(Result);
     Result:= HashStr2BinStr(Result);
     Result:= Fmd5(Result);
end;

function Fmd5(str:string):string;
var
   md5 : TIdHashMessageDigest5;
   longWordRec : T4x4LongWordRecord;
begin
     md5 := TIdHashMessageDigest5.Create;
     try
        {$IFDEF ID10}
        Result:= md5.HashStringAsHex(str);
        {$ELSE}
        longWordRec:= md5.HashValue(str);
        Result:= md5.AsHex(longWordRec);
        {$ENDIF}
     finally
        md5.Free;
     end;
end;

function HashStr2BinStr(Hash:string):string;
var
   buf:array[0..63] of Char;
   i:Integer;
begin
    Result:='';
    FillChar(buf, SizeOf(buf),0);
    SetLength(Result, Round(Length(Hash)/2));
    FillChar(Result[1], Length(Result),0);
    HexToBin(PChar(Hash), buf,SizeOf(buf));
    for i:=0 to Round(Length(Hash)/2)-1 do
        Result:= buf;
end;

 

 

使用方法:

密码和验证码加密后的结果 = Preprocess(密码, 验证码);

Technorati 标签: JavaScript, qq, web登录, 客户端加密, 密码
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值