把第个字符的ASCII和一个数异或

解决方案 »

  1.   

    去这儿看看:
    http://www.csdn.net/Expert/topic/405/405445.shtm
      

  2.   

    用一个密钥对明文作异或(XOR)处理,如果要防止密文的规律性,可以对明文块作交换,密钥也可以作交换,这是一个很好的方法,只要密文足够长,就有足够的安全性,解密的时候再用密钥对密文作异或就可以恢复了,当然如果加密的时候明文块做了交换,密文也要作相应的反交换。如果你不怕麻烦的话还可以采用IEDA的加密方法,其实这种方法只是用了类似于异或的操作代替了异或操作。IDEA算法也很简单,同样的密钥足够长,也有很好的抗攻击性能,速度也很快。
      

  3.   

    谢谢!请问你的例子中i的最后一个值16是什么意思?将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-密码
      

  4.   

    function EnDeCode(const Value : String) : String;//加密
    var
      CharIndex  : Integer;
      ReturnValue : String;
    begin
      ReturnValue := '';
      for CharIndex := 1 to Length(Value) do
      begin
        ReturnValue := ReturnValue + chr(NOT(ord(Value[CharIndex])));
      end;
      Result := ReturnValue;
    end;
    function DisDeCode(const Value : String) : String;//解密
    var
      CharIndex  : Integer;
      ReturnValue : String;
    begin
      ReturnValue := '';
      for CharIndex := 1 to Length(Value) do
      begin
        ReturnValue := ReturnValue + chr(NOT(ord(Value[CharIndex])));
      end;
      Result := ReturnValue;
    end;