100分求文本文件进行加密解密问题(100分)

  • 主题发起人 主题发起人 jerryshow
  • 开始时间 开始时间
J

jerryshow

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在编程时候遇上文本文件需要进行加密解密的问题,先阐述如下:
思路1:1将字符串加密后,变成乱码,写入文本;
2读乱码文本,readln读出文本到字符串,解密;或者利用tstrings将数据读出,然后在解密保存,
但是在解密的过程中发现有些字符串不能回复原来的样子!!!还是乱码!!
一直不能解决!!有过类似经验的朋友过来看看,给予解决!谢谢!
 
呵呵,那就是你的加密解密代码有问题了。应该是能还原的!
 
等待高手...是不是转换算法不对?
 
加密代码没有问题的
因为在单部调试的时候对字符串一点没有问题,我用的一种方法如下代码:
function Crypt(const s: string; Key: Word; const bEncrypt: boolean = True): string; overload;
//jerryshow 字符串True加密 false解密!!
var
i : integer;
begin
SetLength(Result, Length(s));
for i := 1 to length(s) do
begin
if bEncrypt then
Result:=chr(ord(s) xor key)
else
Result:=chr(ord(s) xor key);
end;
end;
加密解密代码
MystringList1:=TStringList.Create;
MystringList2:=TStringList.Create;
MystringList3:=TStringList.Create;
Mystringlist1.LoadFromFile('d:/temp2.txt');
memo1.Text :=mystringlist1.Text;
mystringlist2.Text:=crypt(mystringlist1.Text,255,true);
mystringlist2.SaveToFile('d:/temp1.txt') ;
mystringlist1.Clear;
mystringlist2.Clear;
mystringlist1.LoadFromFile('d:/temp1.txt') ;
mystringlist2.Text:=crypt(mystringlist1.Text,255,false);
mystringlist2.SaveToFile('d:/temp3.txt') ;
memo2.Text :=mystringlist2.Text ;
MystringList1.Free;
MystringList2.Free; MystringList3.Free;
通过上程序获得的'd:/temp2.txt'和'd:/temp3.txt'值部分不一样
加密前:
100#客舱下半区#编号(默认)#到后气密隔框的机身的下半部##
200#客舱上半区#编号(默认)#到后气密隔框的机身的上半部##
300#尾部#编号(默认)#尾部标准系列号##
400#动力装置和支柱#编号(默认)#动力装置和支柱##
500#左翼#编号(默认)#左翼##
600#右翼#编号(默认)#右翼##
700#起落架#编号(默认)#起落架和起落架舱门##
800#舱门#编号(默认)#货舱及客舱舱门、舱门密封条和锁销##
900#保留区域#编号(默认)#保留,用于标准系列号未涉及到的飞机型号间的显著差别##
320#创面地方#编号(默认)#阿瑟发大幅度#阿瑟多幅所附所附#
710#A区域#编号(默认)#飞机轮胎,起落架收放部分#李林#
130#设备舱#编号(默认)#客舱下半部包括空调系统,电源系统,指示记录系统等在内的区域#李林#
解密后:
100#客舱下半区#编号(默认)#到后气密隔框醯幕?淼南掳氩?#
200#客舱上半区#编号(默认)#到后气密隔框醯幕?淼纳习氩?#
300#尾部#编号(默认)#尾部标准系列号##
400#动力装置和支柱#编号(默认)#动力装置和支柱##
500#左翼#编号(默认)#左翼##
600#右翼#编号(默认)#右翼##
700#起落架#编号(默认)#起落架和起落架舱门##
800#舱门#编号(默认)#或醪占翱筒詹彰拧⒉彰琶芊馓蝓和锁销##
900#保留区域?编号(默认)#保留,用于标准系列号未涉及到的飞机型号间的显著差别##
320#创面地方#编号(默认)#阿瑟发大幅度#阿瑟多幅所附所附#
710#A区域?编号(默认)#飞机轮胎,起落架收放部分#李林#
130#设备舱#编号(默认)#客舱下半部包括空调系统,电源系统,指示记录系统等在内的区域?李林#
 
会不会有这类情况,如:(ord(s) xor key)后的值等于$10或$13?
 
说的很对,我也担心会出现转换后出现#10#13之类的字符,
不过最近我应用流文件的读入读出函数进行重载己经解决了上面的问题,
谢谢各位,给你们加点分,呵呵
 
多人接受答案了。
 
后退
顶部