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

2017年(81)

2011年(1)

2009年(369)

2008年(337)

分类:

2008-10-14 16:38:58



算法想实现这么个功能  
  加密:  
  根据10位数的数字编号如"1000000001",加上数字Key后,产生一串8位数的数字编号  
   
  解密:  
  解密就是把8位数数字编号还原成10的  
   
  请各位高手帮忙,分不够可以再给

大家帮帮忙啊

程序自己写,给你说方法,  
  加密:数字编号->转成16进制数字编号->加数字key->不够8位在前面补随机数->第一位的16进制高8位是描述你加密的有效长度.  
  解密,反之  
   
   
 

UP

算法还是自己想个比较好,要不加密就没什么意义拉

最简单就是通过异或进行加解密,举个例子吧,密钥K长度为l,欲加密明文a长度为L,  
  将明文分段截取为a1+a2+...+an;长度均为l,不足的可高位补0,然后取密文Z=(a1   xor   K)+(a2   xor   K)+...+(an   xor   K),  
  解密的过程与加密相同,将密文分段与密钥异或再拼接就可得到明文,另外,如果想提升一些安全性,则可对每段明文进行多次异或,每异或一次后,将结果循环移位.  
 

说得详细一些,最好帖段代码啊,新手啊

function(a,key:string):string;  
  var  
      temp:string;  
      i,j,blocknum,alen,keylen:   integer  
  begin  
      temp:=a;  
      alen:=length(temp);  
      keylen:=length(key);  
      whlie   (alen   mod   keylen)<>0   do    
      begin  
          temp:=temp+$0;  
          inc(alen);  
      end;  
      setlength(result,alen);  
      blocknum:=alen   div   keylen  
      for   i:=0   to   blocknum-1   do  
          for   j:=1   to   keylen   do  
              result[i*keylen+j]:=char(byte(a[i*keylen+j])   xor   byte(key[j]);  
  end;  
   
 

好象不行啊  
  楼上的不支持数字吧

没人回答啊,郁闷啊

我只是写个例程的说,你只要能找到一个算法就可以了,加解密都是基于数学算法的,只要找到适当的算法,再写成程序就可以了.



[新闻]Silverlight对Flash 微软打垮Adobe
博客园首页 社区 新闻频道 小组 博问 网摘 闪存
阅读(530) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~