将PASSWORD与一个KEY(字符串)异或一下就得到了一个简单的加密字串
将加密后的字串再与这个KEY异或一下就回到了原来的PASSWORD!var
  i: Integer;
  bBuf,bCode: Byte;  For i:=0 to 16 Do
  Begin
    bBuf  := Ord(pass[i]);
    bCode := Ord(key[i mod length(key)]);
    password[i] := Chr(bBuf xor bCode);
  End;
pass-明码
password-密码

解决方案 »

  1.   

    to:coldsea_2000(张海) 
       呵呵,我也是这么想的。我并不需要特别复杂的加密技术。
       可是,我有一个要求,加密后的字符能规范一些,限制在数字和字母之中,
    不要出现其他符号。千山的办法很简洁,可是有字符超出这个限制的问题。还
    有就是密匙如果和加密前的字符相同,出现#0,那就无法正确还原了。
      

  2.   

    To : adailee(不谈恋爱的铅笔):
       既然为文件加密了,那么加密后的字符当然越丑越好了,反正人家也是看不懂,说不定还能对你产生莫测高深的感觉呢!
       我以前搞过一个加密程序,我当时不是用为每个字符加值这样的方式来做的,而是自己编一个函数把每行中的字符顺序打乱;比如说:str1是原来的字符串,那么str2:=jiami(str1),此时str2就是加密后的字符串,然后在文本中一行一行的读,一行一行的加密,再写到文本中去;
    解密的时候只要用str1;=jiemi(str2)还原;
      

  3.   

    我当时做的顺序是:
    一:加密文件
    1),建立一个文件dfile;
    2),从源文本文件sfile中读入一行,赋值给str1;
    3),str2;=jiami(str1);把str2写到dfile中;
    4),重复(2)、(3)直到源文本文件结束;
    5),删掉源文本文件sfile;把dfile改名为sfile;
    6),结束,退出;解密过程相似!
      

  4.   

    现在关键的就是算法了;我用的是打乱顺序的方法,比如说把第length(str1)个字符放到第一位,解密只要放回即可,这样加密和解密的算法可以相互换用;用这种方法加密汉字的文本后,显示的就是一些奇怪的字符,人家看不懂;但是这个方法有个最大的缺点就是,如果有人看了加密后的文件,并且不小心改了个字符或者加了个空格,那就坏了,解密后的东西,可能就会有些东西还是看不懂的乱码;所以这个方法有缺陷;
    想来想去,还是字符加值的方法比较好点,他是针对某个字符而不是字符串,所以不会出现什么错误;你说的那个什么#0的问题,我没弄懂,而且我回去按照这样编程序的时候,也没发现你所说的问题,可能我的测试还是不全面吧!
      

  5.   

    我的那个算法,
    密码如果和密匙相同也是没有问题的!
    出现#0也是很正常的!
    不过没有关系,二进制串没有不包涵#0的道理,
    你不要用pchar,string!
    加密后的密文当然是用一个谁也看不懂的二进制串进行存储了!
      

  6.   

    如果用加上一定的值来进行加密,
    如果还要保证加密后的密码是可以显示的字符
    那么我想我可以从我自己的密码和加密后的字符串中
    一下子就看出加密的规律,如:
    我的密码为"aaaaa",加密后就变为"ddddd",
    我就知道我只是加了3,
    如果我发现有个人的密后的字符串为“defg”
    那个我知道了他的密码为:“abcd”!
      

  7.   

    我以前也是在这个上面考虑过,和你的想法也是差不多,后来我又想了一个方法,就是所加的
     值不是一个定值,而是由一个函数生成;比如说我们可以在所加密的字符的序号上面做一些文
     章;我是这样的想的,假如一个字符ch的序号为80,
       n:=ord(ch);
       k:=n div 9;
       l:=n mod 9; 
       n1:=k*10+l;
     此时n1的值为88;那么加密后的字符可以为newchar:=chr(n1);
     当然也可以在这个n1上面先加上一个定值,再转换成字符; 但是我发现了一个问题,就是如果字符的序号比较小,那么它们的增幅基本上一样,这样
     按照你所说的思维方法来讲还是可以发现一点的;所以我想加上一个控制策略,当序号低
     于一定值的时候,就div、mod一个较小的值,拉开他们的差距;当然所有加的范围肯定也
     要注意的。如何复原当然也知道了; 我是这样想的,但是还没有试验过,可能还有什么不妥的地方;希望
     liang_z(千山一刀之忍者神龟) 大哥以及各位大虾不吝指教!