如何对字符串简单加密?要求可逆(50分)

  • 主题发起人 主题发起人 有毛病
  • 开始时间 开始时间

有毛病

Unregistered / Unconfirmed
GUEST, unregistred user!
比如我有字符串1与字符串2 怎样加密后得到字符串3。
执行上述操作后,反回来我知道字符串3和字符串2,要得到字符串1,又怎么做?
XOR的反函数什么?
 
XOR的反函数就是XOR本身。

若有 A XOR B => C (A与B等长),则有 B XOR C => A 以及 A XOR C => B。


题目改了?安全性极高的双向流式加密算法:
http://www.delphibbs.com/keylife/iblog_show.asp?xid=7088
其它的加密算法可以很容易的搜索到。
 
旧字符 XOR 固定字符 = 新字符
新字符 XOR 固定字符 = 旧字符
1 xor 2 = 3
3 xor 2 = 1
 
怎么我下边的代码有问题呢?说类型不匹配。

procedure TForm1.Button1Click(Sender: TObject);
var
str1:string;
str2:string;
str3:string;
begin
str1:=EDIT1.Text;
STR2:=edit2.Text;
str3:= str1 XOR str2;

end;
 
楼主,你要写个函数一个字符一个字符的异或才行的[:)]
 
哦,异或操作只能是一个字符,而不能是字符串?
 
Delphi中的XOR操作符是针对序数类型的,您需要按顺序对字符串中的每一个字符进行XOR
操作才行的。

SetLength(Str3,Length(Str1));
for i:=1 to Length(Str3) do
Str3:=Char(Byte(Str1) XOR Byte(Str2));
 
funtion jiami(str:String):String;
var
i,l:integer;
k,t:byte;
begin
result:='';
l:=length(str);
for i:=1 to l do
begin
t:=ord(str);
k:=(t shl 4) or (t shr 4); //每个字符的高低位进行交换,再交换一次还还原了!
result:=result+chr(k);
end;
end;

加密和解密都是这一个函数~~~代码较少,但不知道实不实用!
 
后退
顶部