关于加密算法

                            
我照着现有的java程序写了一个加密算法,有点问题   
  这是java程序  
                  public   String   encryption(String   sSource)  
                  throws   Exception  
                  {  
                  int   n;  
                  int   code; //byte  
                  String   des;  
                  String   strKey;  
                  int   num1,num2;  
                  char   charcode;  
                              String   EncodeStr; //返回值  
   
                  try   {  
                                  if   (sSource.length()==0)   {  
                                                  EncodeStr   =   "";  
                                                  return   EncodeStr;  
                                  }  
                                  strKey   =   ENCODE_KEY1   +   ENCODE_KEY2   +   ENCODE_KEY3   +   ENCODE_KEY4   +   ENCODE_KEY5   +   ENCODE_KEY6;  
                                  int   onenum=1;  
                                  char   onestr=(char)   onenum;  
                                  while   (sSource.length()   <   8   )  
                                                  sSource   =   sSource   +   onestr;  
                                  des   =   "";  
                                  for   (n=1   ;   n   <=   sSource.length();n++)  
                                  {  
                                          while   (true)  
                                                          {  
                                                          double   myrandom=Math.random();                                                          
                                                  code   =(int)     Math.round(myrandom   *   100);  
                                                  num1   =   sSource.charAt(n-1);  
                                                  while   (   (code   >   0)   &&   (   (   (code   ^   num1   )<   0)   ||   ((code   ^   num1)   >   90))   )  
                                                        code   =   code   -   1;  
                                                  charcode=(char)   code;  
                                                  if   (   (code   >   35)   &&   (code   <   122)   &&   (charcode   !=   '|')   &&   (charcode   !=   '\'')   &&   (charcode   !=   ',')   &&   (strKey.charAt(code   ^   num1)   !=   '|')   &&   (strKey.charAt(code   ^   num1)   !=   '\'')     &&   (strKey.charAt(code   ^   num1)   !=   ',')   )  
                                                                    break;  
                                                          }  
                                          charcode=(char)   code;  
                                          //System.out.println("c="+charcode);  
                                          //确保生成的字符是可见字符并且在SQL语句中有效  
                                          num2   =   sSource.charAt(n-1);  
                                          des   =   des   +   charcode   +   strKey.charAt(code   ^   num2);  
                                  }  
                                  EncodeStr   =   des;  
                  }   catch   (Exception   ex)   {  
                                                          EncodeStr="Exception/Message:"   +   ex.getMessage();  
   
                  }  
                  return   EncodeStr;  
                  }  
  这是我写得delphi程序  
  function   encryption(sSource:string):string;//加密  
  var   strKey,des,ENCODE_KEY1,ENCODE_KEY2,ENCODE_KEY3,  
          ENCODE_KEY4,ENCODE_KEY5,ENCODE_KEY6,EncodeStr:string;  
          n,code,num1,num2,temp:integer;  
          xorstr,onestr,charcode:char;  
  begin  
      ENCODE_KEY1:='zxcvbnm,./asdfg';  
      ENCODE_KEY2:='hjkl;'+''''+'qwertyuiop';  
      ENCODE_KEY3:='[]\1234567890-';  
      ENCODE_KEY4:='=`   ZXCVBNM<>?:LKJ';  
      ENCODE_KEY5:='HGFDSAQWERTYUI';  
      ENCODE_KEY6:='OP{}|+_)(*&^%$#@!~';  
      strKey:=ENCODE_KEY1+ENCODE_KEY2+ENCODE_KEY3+ENCODE_KEY4  
                      +ENCODE_KEY5+ENCODE_KEY6;  
      temp:=1;  
      code:=0;  
    if   Length(sSource)=0   then  
          begin  
              EncodeStr:='';  
          end  
          else  
            begin  
              onestr:='';  
              while   Length(sSource)<8   do   sSource:=sSource+onestr;  
              des:='';  
              for   n:=1   to   Length(sSource)   do  
                  begin  
                      while   code=0   do   code:=Random(100);  
                      temp:=temp+1;  
                      num1:=ord(copy(sSource,n,1)[1]);  
                      while   (code>0)and   (((code   xor   num1)<0)   or   ((code   xor   num1)>90))   do  
                              code:=code-1;  
                              charcode:=chr(code);  
                      if   (code>35)   and   (code<122)   and   (charcode<>'|')  
                              and   (charcode<>'\')   and   (charcode<>',')  
                              and   (copy(strKey,code   xor   num1,1)<>'|')  
                              and   (copy(strKey,code   xor   num1,1)<>'\')  
                              and   (copy(strKey,code   xor   num1,1)<>',')  
                              then  
                              break;  
                        charcode:=chr(code);  
                        num2:=ord(copy(sSource,n,1)[1]);  
                        des:=des+charcode+copy(sSource,code   xor   num2,1);  
                        showmessage(des);  
                  end;  
            end;  
            EncodeStr   :=   des;                      
  end;  
  我的程序每次都返回一个空值,不知道哪有问题

查看回复

相关问题