如何对流的内容进行加密或者解密操作
流的操作加解密操作(文件流和内存流)
1)文件在以内存流方式写入文件前先加密内存流再写入文件
2)读取内存流的信息时先解密内存流,再读取相关数据
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
流的操作加解密操作(文件流和内存流)
1)文件在以内存流方式写入文件前先加密内存流再写入文件
2)读取内存流的信息时先解密内存流,再读取相关数据
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
文字 姓名 王一 (是必选项)
数据 年龄 25 (是必选项)
图片 照片 王一照片 (不是必选项,是可有可无的
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//==================================================================
//函数名:Encrypt //Decrypt
//作者:
//功能:字符串加密、解密函数
//==================================================================
function Encrypt(str:string):string; //加密
var
s : string[255];
c : array[0..255] of Byte absolute s;
i:Integer;
begin
s:=str;
For i:=1 to ord(s[0]) do
c[i] := i XOr c[i];
result:=s;
end;function Decrypt(str:string):string; //解密
var
s : string[255];
c : array[0..255] of Byte absolute s;
i:Integer;
begin
s:=str;
For i:=1 to Length(s) do
s[i] := chr(i XOr ord(s[i]));
result:=s;
end;
结构如下:
由于程序中内部的重新设计结构如下:
type //定义记录集[结构]
TstudentClass=^Tmystudent;
Tmystudent=record
Versnum:string; //数据库的版本号(比如这个为Ver:1.40)
xh:string[8]; //学号,
xm:string[8]; //姓名
yw,sx:integer; //定义科目
JPGsize:integer; //图片大小
JPGfile:pchar; //图片内容
end;
public
mystud:Tmystudent;
.
.
.
//得到用户操作的数据
//function Encrypt(str:string):string; //加密
Encrypt(mystud);
write(mystud);//写入文件
//function Decrypt(str:string):string; //解密
read(mystud); //读取信息
Decrypt(mystud);
//返回到相应的信息表中
procedure jm(const Source;var Dest;Count:Integer;const Key:ShortString);
var s,d,k:pchar;
i,j:integer;
len:Byte;
begin
s:=pchar(@Source);
d:=pchar(@Dest);
k:=pchar(@Key[1]);
len:=length(Key);
for i:=0 to Count-1 do
begin
j:=i mod len;
d[i]:=chr(ord(s[i]) xor ord(k[j]) xor len);
end;
end;用法:
procedure TForm7.Button2Click(Sender: TObject);
Type
PRec=^TRec;
TRec=Record
a:Integer;
b:String[20];
end;
var s,d:TRec;
Buf:Pchar;
Key:String;
begin
s.a:=1000;
s.b:='中国abc';
Key:='abcdef';
//加密
getMem(Buf,sizeof(TRec));
jm(s,Buf^,SizeOf(TRec),Key);//加密后的结果放到Buf里
showmessageFmt('%d %s',[PRec(Buf)^.a,PRec(Buf)^.b]);//显示加密后的结果
//解密
jm(Buf^,d,sizeof(TRec),Key);
showmessageFmt('%d %s',[d.a,d.b]);//显示解密后的结果
freeMem(Buf);
end;
JPGsize:integer; //图片大小
JPGfile:pchar; //图片内容