Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1226809
  • 博文数量: 788
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 7005
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-19 15:52
文章存档

2017年(81)

2011年(1)

2009年(369)

2008年(337)

分类:

2009-03-02 11:35:52



把数据加密后再通过套接字函数发送出去       接收方收到后再解密  
   
   
  所谓加密就是   对数据隔位取反   再把数据调整位置(第一位和第二位对调,第三和第四   等等)。  
   
  但是我刚学delphi     不是怎么把字符串数据转为二进制     请高手给出加密解密代码

请高手现身  
   
  请高手献身

怎么没人??

你出的题难呗,会ASM的都不在。  
   
  字符串好说:  
   
  var  
  s:string;  
  buf:pchar;  
  buf1:array   of   byte;  
  begin  
    s:='hihisdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf';  
    getmem(buf,length(s));  
    setlength(buf1,length(s));  
    hextobin(pchar(s),buf,length(s));  
    copymemory(@buf1[0],buf,length(s));  
    showmessage(inttostr(buf1[0]));  
    freemem(buf);  
  end;  
   
  取反  
  var  
  a,b:byte;  
  begin  
  a:=$f0;  
  b:=not   a;  
  showmessage(inttostr(b));  
   
  隔位取反和移位的要求比较难以实现,等高手来吧。  
 

多谢楼上的  
   
  我的网络加密     还有数字   特殊字符   汉字     都能处理吗?  
   
  或者不按我出的加密方法     你们有什么变化多端的加密方法??  
   
  给我加密解密函数     最好是每次加密结果都不一样的

procedure   Encode(var   buf;   size:   Integer);  
  var  
      T:   Byte;  
      P1,   P2:   PByte;  
  begin  
      P1   :=   PByte(@Buf);  
      P2   :=   PByte(PChar(@Buf)   +   1);  
      while   Size   >   0   do  
      begin  
          T   :=   P2^;  
          P2^   :=   not   P1^;  
          P1^   :=   not   T;  
          Inc(P1,   2);  
          Inc(P2,   2);  
          Dec(Size,   2);  
      end;  
  end;  
   
  procedure   Decode(var   Buf;   Size:   Integer);  
  begin  
      Encode(Buf,   Size);  
  end;

同样的输入,得到同样的输出。  
   
  好似   不可能每次加密结果都不一样。

用随机密钥加密         在连同密钥和加密之后的密文传过来不就行了?  
   
  但是我不会实现

用加密算法加解密不就行了吗

楼上的     我是初学者  
   
  难道delphi自带了这种函数??     函数名是什么??   在哪个pas里定义的??       要求加密过程利用密钥的         而且可加密特殊字符和汉字

a是加密的数据,如果2,4,6,8取反   b是加密后的  
  b:=   a   or   ((not   a)and   85)  
 

上面的错了,这个  
   
  a是加密的数据,如果2,4,6,8取反   b是加密后的  
  b:=   (a   and   170)   or   ((not   a)and   85)  
  CHR也是字节值,所以有ORD()可以转换起ASCII值  
  //==================================================  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
  a,b:integer;  
  begin  
      a:=100;  
      b:=(a   and   170)   or   ((not   a)and   85)   ;  
      edit1.Text   :=inttostr(b);  
  end;

function   encode(a   :   byte):byte  
  var   b   :   byte;  
  begin  
      b   :=   a   xor   85;   //隔位取反  
      Result   :=   (b   shl   1)   and   170   or   (b   shr   1)   and   85;     //邻位对调  
  end;



--------------------------
新闻:上海最快3月底推TD上网本
导航:博客园首页  知识库  新闻  招聘  社区  小组  博问  网摘  找找看
阅读(487) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~