注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Java >> 核心技术 >> 高级编程 >> Java正文

JAVA实现的AZDG加密-解密算法

文章来源:中国IT实验室收集整理 作者:佚名 更新时间:2008-6-28 20:32:21 【 】 【加入收藏

JAVA实现的AZDG加密-解密算法。源程序:

    import java.io.IOException;

    import java.security.MessageDigest;

 

 

    public class Azdg {

 

        public static void main(String[] args) {

 

           Azdg azdg = new Azdg();

           System.out.println(System.currentTimeMillis()/1000);

           String clearText = "no=sh0105&time=12319399372223`112r3r223";//明文

           String cipherText = "";//密文

           String cleanText = "";//解密后的

           String key = "1234567890";//密钥,可自定义

 

           System.out.println("明文为:" + clearText);

           cipherText = azdg.encrypt(clearText, key);

           System.out.println("加密后为:"+cipherText);

           cleanText = azdg.decrypt(cipherText, key);

           System.out.println("解密后为:"+cleanText);

        }

 

        /**

         * 加密算法

         * */

        public String encrypt(String txt, String key) {

           String encrypt_key = "0f9cfb7a9acced8a4167ea8006ccd098";

           int ctr = 0;

           String tmp = "";

           int i;

           for (i = 0; i < txt.length(); i++) {

               ctr = (ctr == encrypt_key.length()) ? 0 : ctr;

               tmp = tmp + encrypt_key.charAt(ctr)

                      + (char)(txt.charAt(i) ^ encrypt_key.charAt(ctr));

               ctr++;

           }

           return base64_encode(key(tmp, key));

        }

 

        /**

         * 解密算法

         */

        public String decrypt(String cipherText, String key) {

           // base64解码

           cipherText = base64_decode(cipherText);

           cipherText = key(cipherText, key);

           String tmp = "";

           for (int i = 0; i < cipherText.length(); i++) {

               int c = cipherText.charAt(i) ^ cipherText.charAt(i + 1);

               String x = "" + (char) c;

 

               tmp += x;

               i++;

           }

           return tmp;

        }

 

        public String key(String txt, String encrypt_key) {

           encrypt_key = strMD5(encrypt_key);

           int ctr = 0;

           String tmp = "";

           for (int i = 0; i < txt.length(); i++) {

               ctr = (ctr == encrypt_key.length()) ? 0 : ctr;

               int c = txt.charAt(i) ^ encrypt_key.charAt(ctr);

               String x = "" + (char) c;

               tmp = tmp + x;

               ctr++;

           }

           return tmp;

        }

 

        public String base64_encode(String str) {

           return new sun.misc.BASE64Encoder().encode(str.getBytes());

        }

 

        public String base64_decode(String str) {

           sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();

           if (str == null)

               return null;

           try {

               return new String(decoder.decodeBuffer(str));

           } catch (IOException e) {

               e.printStackTrace();

               return null;

           }

        }

 

 

       public static final String strMD5(String s) {

           char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',

                  'a', 'b', 'c', 'd', 'e', 'f' };

           try {

               byte[] strTemp = s.getBytes();

               MessageDigest mdTemp = MessageDigest.getInstance("MD5");

               mdTemp.update(strTemp);

               byte[] md = mdTemp.digest();

               int j = md.length;

               char str[] = new char[j * 2];

               int k = 0;

               for (int i = 0; i < j; i++) {

                  byte byte0 = md[i];

                  str[k++] = hexDigits[byte0 >>> 4 & 0xf];

                  str[k++] = hexDigits[byte0 & 0xf];

               }

               return new String(str);

           } catch (Exception e) {

               e.printStackTrace();

           }

           return null;

        }

 

    }

 

    运行结果:

    明文为:no=sh0105&time=123193弄几个中文试试372223`112r3r223 加密后为:VWZWPl81BXMANlA2BjVTNwBuA3dSLwBrUz9XOVk0WDZRPgE1UDZRbQNuU9vNCdnsAoF0CYF2VJS+ UteHAMqrUmADP1g6AWxVOlZiX2gFMQBvUDQGdlM0ACkDY1JpADE= 解密后为:no=sh0105&time=123193弄几个中文试试372223`112r3r223

 

  • 上一篇Java:

  • 下一篇Java:
  • 最 新 热 门
     手机开发平台指南、教程和资料介绍
     关于什么叫面向接口编程
     编写高级JavaScript应用代码
     不要验证,直接转化科学计数法
     Eclipse插件开发中实现刷新和重编译介绍
     Java开源技术:Eclipse的使用技巧详解
     配置eclipse 3.2 使用JDK1.5中文JavaAPI
     集成Windows本地应用到Eclipse RCP 程序中
     hibernate.cfg.xml配置文件的说明
     eclipse开发jface时,main.class解决方法
    最 新 推 荐
     JSP高访问量下的计数程序
     得到两个日期之间的间隔天数
     Java的“静态库链接”
     用Java的加密机制来保护你的数据
     使用Java Annotations来管理对象生命周期
     JAVA实现的AZDG加密-解密算法
     基于RSA模型转换框架的开发
     如何重构出DAO模式
     关于AOP的应用实例
     关于数字排列的一个程序
    相 关 文 章

    编写高级JavaScript应用代码
    Java开源技术:Eclipse的使用技巧详解
    配置eclipse 3.2 使用JDK1.5中文JavaAPI
    Java WebService 整理笔记
    深入探索 高效的Java异常处理框架
    怎样减小JAR文件大小
    妙用异步Servlet扩展AJAX应用程序
    java.servlet.Filter的应用
    Java多线程下载
    JAVAMAIL邮件服务器

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用