【发布时间】:2011-11-16 07:31:17
【问题描述】:
这段代码不是我写的,是以前的程序员。但是,我注意到他没有提供解密算法,导致加密无用。
如何解密?
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;
谢谢!
【问题讨论】:
-
作为提示:您不需要将每一行都放入
。只需在每行前面添加 4 个空格,您将获得突出显示的代码格式 -
幸好它不是没有密钥的加密。
-
@ralu 这不是问题,所谓加密的整个代码都在 Q 中,没有密钥
-
看来逗号替换是将小数字符强制为句点。如果你还在使用这个函数,我会在替换部分使用 DecimalSeparator 全局变量,而不是用逗号编码。
-
“浮点加密技术”甚至可能在不同的 CPU 上产生不同的输出,这要归功于浮点引擎中舍入误差的可能差异。这是写散列的糟糕方法。我永远不会重用这段代码。
标签: windows delphi delphi-7 delphi-xe2