LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1800|回复: 10

用java做了一个加解密的小程序例子.有兴趣的来看看

[复制链接]
发表于 2004-10-4 22:07:50 | 显示全部楼层 |阅读模式
import java.lang.*;
import java.io.*;

class jiami{
        final String sKey="thisiskey";
        private String sdata="welcomeyou";

        public jiami(String tt){
                sdata=tt;
        }
       
        public String getdata(){
                return sdata;
        }
       
        public String jia(){
         char[] tmpdata=sdata.toCharArray();
         int i,j;
         
         for (i=0;i<sdata.length();i++){
                 for (j=0;j<sKey.length();j++){
                         tmpdata=(char)(sdata.charAt(i) ^ sKey.charAt(j));       
                 }
         }
         
         sdata=new String(tmpdata);
         return new String(tmpdata);
        }
       
        public String jie(){
         char[] tmpdata=sdata.toCharArray();
         int i,j;
         
         for (i=0;i<sdata.length();i++){
                 for (j=0;j<sKey.length();j++){
                         tmpdata=(char)(sdata.charAt(i) ^ sKey.charAt(j));       
                 }
         }
         sdata=new String(tmpdata);
         return new String(tmpdata);       
        }
       
        public static void main(String arg[]){
          jiami tmpdata1=new jiami("thisisjgx");
         // jiami tttt=new jiami("thismyfriend");
          
          
          System.out.println(tmpdata1.jia());
          System.out.println("start:"+tmpdata1.getdata());
        /**  System.out.println("is jiahou:"+tmpdata1.getdata());
          System.out.println("is jiemi:"+tmpdata1.jie());
          
         */
                 
        }
}
上面的程序现在有一个问题是:每个加解密后都会有两个字节的偏移.把相邻的数据也影响了.不知错在哪里了.希望有人能指点一下
发表于 2004-10-5 01:21:11 | 显示全部楼层
对于加密解密不太清楚,可否把你做的概念讲清楚些,我试试能否解决,你的双循环都是j的最后一个值同每一个i值处理存入tmpdata,不是很明白!
 楼主| 发表于 2004-10-5 07:26:34 | 显示全部楼层
其实我的思路就是把数据和定义好的Key字串按字节进行XOR操作。j表明按key的字串长度在数据上循环进行。说到这我有点明白了。可能是data的长度和key的长度不成整倍数,所以出界了。:)谢谢。去试试
 楼主| 发表于 2004-10-5 08:12:01 | 显示全部楼层
data:123456789abcdef  key:1234  我想是这样:
####123412341234
#######1----2---3
-------------------def
这里就是要循环三次,余了3个数据....现在是我没找到好的算法.
发表于 2004-10-5 09:21:37 | 显示全部楼层
java的加密方案很多,md5,blowfish等。。。你这种只是简单加密而已
发表于 2004-10-5 14:49:57 | 显示全部楼层
[PHP]for (i=0;i<sdata.length();i++){  for (j=0;j<sKey.length();j++){  tmpdata=(char)(sdata.charAt(i) ^ sKey.charAt(j));   }  }[/PHP]
这里不对。把每个原文的字符都作了sKey.length()次XOR.只要一次就够了。可以改成:
[PHP]j=0; for (i=0;i<sdata.length();i++){  tmpdata=(char)(sdata.charAt(i) ^ sKey.charAt(j)); j++; if j>=sKey.length() j=0  }[/PHP]

给你一个我以前做的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2004-10-5 20:44:07 | 显示全部楼层
谢谢楼上的...
发表于 2004-10-6 09:19:59 | 显示全部楼层

如果写上注释估计大家可以更好的帮你

同上
发表于 2004-10-7 22:49:55 | 显示全部楼层
Looks like......AES......
发表于 2004-10-8 18:07:02 | 显示全部楼层
It IS AES
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表