一个关于字符串加密的问题(200分)

  • 主题发起人 主题发起人 dmg01
  • 开始时间 开始时间
D

dmg01

Unregistered / Unconfirmed
GUEST, unregistred user!
求一个字符串加密的算法,要求:
1、算法可逆。
2、明文和密文都是可打印字符,不包含#13、#0等控制符。
 
简单的方法可以通过固定的算法 如改变字符串的次序! 或者 用与或操作! 也可以通过在固定
位置插入随机长度的字符串, 然后纪录字符串的长度! 很多种方法!
 
与密钥做一下或运算。在转成16进制
 
function uencrypt(str:string;len:integer):string;//解密函数
var sch:string;
j,i:integer;
newstr:string;
begin
sch:='x&bsf0104MtTxR780926';
newstr:='';
j:=1;
for i:=1 to len do
begin
newstr:=newstr+chr(ord(str)-ord(sch[j]));
j:=j+1;
if j>20 then j:=1;
end;
result:=newstr;
end;
function encrypt(str:string;len:integer):string;//加密函数
var sch:string;
j,i:integer;
begin
sch:='x&bsf0104MtTxR780926';
Randomize;
j:=1;
for i:=1 to 255 do
begin
if i<=len then
str:=chr(ord(str)+ord(sch[j]))
else
str:=str+chr(random(255)+ord(sch[j]));
j:=j+1;
if j>20 then j:=1;
end;
result:=str;
end;
 
sch:='x&bsf0104MtTxR780926';时密锁字符串,可以有你自己愿意怎么更改都好
我上面if j>20 then j:=1的位置是判断 sch的长度
 
你看看这里,正是你想要的。
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=702938
 
多人接受答案了。
 
后退
顶部