在delphi中反转加密

Joh*_*erg 1 windows delphi delphi-7 delphi-xe2

编写此代码的不是我,而是以前的程序员.但是,我注意到他没有提供解密算法,导致加密无用.

我怎么解密这个?

function Encrypt(jstr: String): String;
var
  I: Integer;
  A: Real;
begin
  if Length(jstr) = 0 Then begin
    Result := '';
    Exit;
  end;
  A := 0;
    for I := 0 To Length(jstr) do
      A := A + (Ord(jstr[I]) * Pos(jstr[I],jstr)) / 33;
  Result := FormatFloat('0000000000.0000000000',A);
  if Pos(',',Result) > 0 then begin
    Insert('.',Result,Pos(',',Result));
    Delete(Result,Pos(',',Result),1);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

谢谢!

Ste*_*eve 20

它看起来像单向散列,因此不可逆.例如,字符串是非常大的,结果仍然是float的字符串表示.


Dav*_*nan 16

该功能无法逆转.由于它接受任意长度的输入并返回有限长度的输出,简单的信息理论告诉你试图写一般逆的无用.即使对于较短的输入字符串,在我看来,不同的输入字符串可以产生相同的加密字符串.

即使作为哈希,由于浮点代码的奇怪使用,这个函数对我来说似乎非常脆弱.如果我是你,我会用更符合目的的东西替换这个功能.

最后,我建议您对此开发人员生成的所有代码进行审核.这段代码和算法的低质量告诉我,这个开发人员所触及的一切都有可能存在缺陷.

  • 爱你最后一段大卫:-) (6认同)
  • 我打赌我们大多数人都认为我们足够聪明,可以创建自己的加密方案!在我们的职业生涯中,我们应该尽早得到警告,不要自己涉及加密:-) (2认同)