tempad
Readygo技术搜索引擎 >>游戏开发 >> 求一段加密解密代码,只要能对字符串进行简单的加密解密就行。

求一段加密解密代码,只要能对字符串进行简单的加密解密就行。

Readygo技术搜索引擎 网络搜索 efish 2008-1-17 2:00:47

求一段加密解密代码,只要能对字符串进行简单的加密解密就行。

楼主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

责任编辑: efish 参与评论 查找更多:
相关文章
菜鸟问题 (我的第一个java程序) 有可能是和环境变量… 菜鸟问题 (我的第一个java程序) 有可能是和环境变量的设置有关
请问,Form类的实例可以被序列化吗?如果能如何作 请问,Form类的实例可以被序列化吗?如果能如何作
各位可否回答一下这个问题呢? 各位可否回答一下这个问题呢?
?????请问这个错误如何解决???? ?????请问这个错误如何解决????
谢谢大家!!!!! 谢谢大家!!!!!
UPlink口和普通口在交换机堆叠中有什么区别吗? UPlink口和普通口在交换机堆叠中有什么区别吗?
关于USE CASE的描述,谈谈你的高见 关于USE CASE的描述,谈谈你的高见
会改BIOS的近来 会改BIOS的近来
BT 原理问题 BT 原理问题
关于声音~~~~~~~~~~ 关于声音~~~~~~~~~~
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn

分类导航
Readygo技术搜索引擎