X
xhqing
Unregistered / Unconfirmed
GUEST, unregistred user!
我用这个函数给一字符串加密:
function fa(beforeStr:string):string;
var
key: string;
i, Len: integer;
begin
Len := Length(beforeStr);
key := 'password ASCII jm';
if Length(key) > Len then
key:=copy(key,1,Len)
else
if Length(key) < Len then
key := key + ' ';
SetLength(Result, Len);
for i:=1 to Len do
begin
result:=chr(swap(ord(beforeStr) xor ord(key)));
end;
而用下面这个函数解密,为什么得不到正确结果呢?经测试,解密得到的结果是
key := 'password ASCII jm'这个串的前几个字符:
function fb(beforeStr:string):string;
var key,rs:string;
i,Len:integer;
begin
Len:=length(beforeStr);
key:='password ASCII develop';
if Length(key) > Len
then key:=copy(key,1,Len)
else
if Length(key) < Len then begin key:= key + ' '; end;
result:='';
SetLength(Result,Len);
for i:=1 to Len do
begin
result:=chr(swap(ord(beforeStr)) xor ord(key));
end;
end;
原来设想是加密:先异或,再交换每个字节的高四位、低四位
解密:先交换每个字节的高四位、低四位,再异或(括号的位置看来没有错),
可是怎么得不到正确结果呢?我是通过写文件或是用Label.caption来显示的,希望得到高手的指点
function fa(beforeStr:string):string;
var
key: string;
i, Len: integer;
begin
Len := Length(beforeStr);
key := 'password ASCII jm';
if Length(key) > Len then
key:=copy(key,1,Len)
else
if Length(key) < Len then
key := key + ' ';
SetLength(Result, Len);
for i:=1 to Len do
begin
result:=chr(swap(ord(beforeStr) xor ord(key)));
end;
而用下面这个函数解密,为什么得不到正确结果呢?经测试,解密得到的结果是
key := 'password ASCII jm'这个串的前几个字符:
function fb(beforeStr:string):string;
var key,rs:string;
i,Len:integer;
begin
Len:=length(beforeStr);
key:='password ASCII develop';
if Length(key) > Len
then key:=copy(key,1,Len)
else
if Length(key) < Len then begin key:= key + ' '; end;
result:='';
SetLength(Result,Len);
for i:=1 to Len do
begin
result:=chr(swap(ord(beforeStr)) xor ord(key));
end;
end;
原来设想是加密:先异或,再交换每个字节的高四位、低四位
解密:先交换每个字节的高四位、低四位,再异或(括号的位置看来没有错),
可是怎么得不到正确结果呢?我是通过写文件或是用Label.caption来显示的,希望得到高手的指点