求一段加密解密代码,只要能对字符串进行简单的加密解密就行。
求一段加密解密代码,只要能对字符串进行简单的加密解密就行。
楼主wushenjian(生活在远方)2002-11-22 17:14:06 在 Delphi / VCL组件开发及应用 提问如题 问题点数:100、回复次数:16Top
1 楼mircocheng(少清风)回复于 2002-11-22 17:19:28 得分 5
我现在是想不起来了。心情坏透了。
你可以参考最近几期的电脑报。上面有 。Top
2 楼mrfanghansheng(☆☆☆木鱼☆☆☆)回复于 2002-11-22 17:20:29 得分 20
最简单的异或运算……解密就是把程序再运行一次
function EncryptOrUnEncryptfiles(FileName: string;jor:boolean):boolean;
var
iFileHandle: Integer;
iFileLength: Integer;
Buffer: PChar;
i : integer;
cflag:boolean;
key:integer;
newfilename:string;
begin
if not fileexists(filename) then //若文件不存在则返回
begin
result:=false;
exit;
end;
iFileHandle := FileOpen(FileName, fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iFileLength := FileRead(iFileHandle, Buffer^, iFileLength);
FileClose(iFileHandle);
FileSeek(iFileHandle,0,0);
for i:=0 to iFileLength do //文件主体信息异或算法一次
begin
(Buffer+i)^:=chr(integer((Buffer+i)^) xor key);
end;
iFileHandle := FileCreate(FileName);
Filewrite(iFileHandle, Buffer^, iFileLength);
FileClose(iFileHandle);
freemem(Buffer);
result:=true;
end;Top
3 楼laihecongxi(兴哥)回复于 2002-11-22 17:20:39 得分 20
短字符串的简单加密/解密
const
c1 = 52845;
c2 = 22719;
function Encrypt (const s: string; Key: Word) : string;
var
i : byte;
begin
Result := s;
for i := 1 to length (s) do
begin
Result := Char (byte (s) xor (Key shr 8));
Key := (byte (Result) + Key) * c1 + c2
end
end;
function Decrypt (const s: string; Key: Word) : string;
var
i : byte;
begin
Result := s;
for i := 1 to length (s) do
begin
Result := Char (byte (s) xor (Key shr 8));
Key := (byte (s) + Key) * c1 + c2
end
end;
Top
4 楼daniel007(添)回复于 2002-11-22 17:21:04 得分 10
你的邮箱Top
5 楼mrfanghansheng(☆☆☆木鱼☆☆☆)回复于 2002-11-22 17:21:32 得分 0
key 是密钥 例如 key:=35;Top
6 楼wushenjian(生活在远方)回复于 2002-11-22 17:26:18 得分 0
daniel007(添) :wsj@huigu.netTop
7 楼wushenjian(生活在远方)回复于 2002-11-22 17:28:08 得分 0
laihecongxi(兴哥) :
你这段代码似乎有问题,很容易溢出。Top
8 楼wushenjian(生活在远方)回复于 2002-11-22 17:30:32 得分 0
mrfanghansheng(***Rocket***) :
有没有对字符串加密解密的,简单点就行。Top
9 楼daniel007(添)回复于 2002-11-22 17:38:51 得分 0
已发
Top
10 楼strongq(火血狼)回复于 2002-11-22 20:03:12 得分 30
function ptom(const s:string;key:word):string;
var
i:byte;
begin
//result:=s;
setlength(result,length(s));
for i:=1 to length(s) do
begin
result:=char(byte(s)xor (key shr 8));
key:=(byte(result)+ key)*fc1+fc2;
end;
end;
function mtop(const s:string;key:word):string;
var
i:byte;
begin
setlength(result,length(s));
for i:=1 to length(s) do begin
result:=char(byte(s)xor(key shr 8));
key:=(byte(s)+key)*fc1+fc2;
end;
end;Top
11 楼strongq(火血狼)回复于 2002-11-22 20:06:26 得分 0
忘了说了上面的fc1,fc2为秘匙,可为任意整数常量,我用的是
fc1:=52845;
fc2:=22719;Top
12 楼strongq(火血狼)回复于 2002-11-22 20:11:59 得分 0
以上摘自<<DELPHI斑竹答疑>>Top
13 楼wushenjian(生活在远方)回复于 2002-11-23 21:46:12 得分 0
daniel007(添) :我没有收到,麻烦再发一次到wsj@huigu.net
strongq(火血狼) :这段代码运行到key:=(byte(s)+key)*fc1+fc2就
会溢出,另外,key取值多少?
Top
14 楼wushenjian(生活在远方)回复于 2002-11-25 09:25:26 得分 0
楼上各位的方案都没有行通,还是我自己做个简单的,就是把各个字符
转换成ASICC码,再加1,呵呵,能起到简单的信息屏蔽作用就行了。
散分吧。Top
15 楼Linux2001(闭关开发中)回复于 2002-11-25 09:28:56 得分 10
用CRC32也可以,比较好的方法是使用DES或者是PGP,这些网上都有资料Top
16 楼DelUser(探索者)回复于 2002-11-25 09:48:55 得分 5
用 strongq(火血狼) 的应该就可以了!Top
-
相关文章
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn
