知道了原理后,我改成Delphi源码:
procedure TForm1.btn4Click(Sender: TObject);
var
hash: T4x4LongWordRecord;
hashstr: string;
i: integer;
temp3: string;
begin
SetLength(hashstr, 16);
with TIdHashMessageDigest5.Create do begin
hash := HashValue('123456');//此处的hash也是初级的
Move(hash, hashstr[1], 16);
for i := 1 to Length(hashstr) do
temp3 := temp3 + Char(hashstr[i]);
hash := HashValue(temp3);
Move(hash, hashstr[1], 16);
temp3 := '';
for i := 1 to Length(hashstr) do
temp3 := temp3 + Char(hashstr[i]);
temp3 := AsHex(HashValue(temp3));//此处的AsHex就是转换最终的MD5字符串(32位)
temp3 := temp3 + 'EFTA';
temp3 := AsHex(HashValue(temp3));
ShowMessage(temp3);
Free;
end;
end;
以上代码可以得到09967317CCFC266ADA83C9B1BEA30825这加密后的字符串
我现在写的QQ农夫 只 是用浏览器直接登录,没有采用模拟post数据的方式登录。所以之前没有对这个加密算法做研究。
希望对QQ密码加密的分析对大家有启发!