JAVA加解密操作的类

将java版的实现加解密操作的功能与您共享

  1. package com.util;
  2. /*******************************************************************************
  3.  * 文件名称:Cryption.java<br>
  4.  * 功能描述:加解密的操作<br>
  5.  * 创建日期:2008-08-21 <br>
  6.  * 
  7.  * @author rain
  8.  * @version 1.0
  9.  ******************************************************************************/
  10. public class Cryption {
  11.     String ENCODE_KEY1;
  12.     String ENCODE_KEY_A;
  13.     String ENCODE_KEY2;
  14.     String ENCODE_KEY_B;
  15.     String ENCODE_KEY3;
  16.     String ENCODE_KEY_C;
  17.     String ENCODE_KEY4;
  18.     String ENCODE_KEY_D;
  19.     String ENCODE_KEY5;
  20.     String ENCODE_KEY_E;
  21.     String ENCODE_KEY6;
  22.     public Cryption() {
  23.         ENCODE_KEY1 = "zxcvbnm,./asdfg";
  24.         ENCODE_KEY_A = "cjk;";
  25.         ENCODE_KEY2 = "hjkl;'qwertyuiop";
  26.         ENCODE_KEY_B = "cai2";
  27.         ENCODE_KEY3 = "[]//1234567890-";
  28.         ENCODE_KEY_C = "%^@#";
  29.         ENCODE_KEY4 = "=` ZXCVBNM<>?:LKJ";
  30.         ENCODE_KEY_D = "*(N";
  31.         ENCODE_KEY5 = "HGFDSAQWERTYUI";
  32.         ENCODE_KEY_E = "%^HJ";
  33.         ENCODE_KEY6 = "OP{}|+_)(*&^%$#@!~";
  34.     }
  35.     /**
  36.      * 解密字符串,
  37.      * 
  38.      * @param varCode
  39.      *            需要解密的字符串
  40.      */
  41.     public String decryption(String varCode) {
  42.         String DecodeStr;
  43.         try {
  44.             if (varCode.length() == 0) {
  45.                 DecodeStr = "";
  46.                 String s = DecodeStr;
  47.                 return s;
  48.             }
  49.             String strKey = String.valueOf(String.valueOf((new StringBuffer(
  50.                     String.valueOf(String.valueOf(ENCODE_KEY1)))).append(
  51.                     ENCODE_KEY2).append(ENCODE_KEY3).append(ENCODE_KEY4)
  52.                     .append(ENCODE_KEY5).append(ENCODE_KEY6)));
  53.             if (varCode.length() % 2 == 1)
  54.                 varCode = String.valueOf(String.valueOf(varCode)).concat("?");
  55.             String des = "";
  56.             int midNum = Math.round(varCode.length() / 2 - 1);
  57.             int n;
  58.             for (n = 0; n <= midNum; n++) {
  59.                 int num1 = varCode.charAt(n * 2);
  60.                 int num2 = strKey.indexOf(varCode.charAt(n * 2 + 1));
  61.                 int num3 = num1 ^ num2;
  62.                 char xorstr = (char) num3;
  63.                 des = String.valueOf(des) + String.valueOf(xorstr);
  64.             }
  65.             int onenum = 1;
  66.             char onestr = (char) onenum;
  67.             n = des.indexOf(onestr);
  68.             if (n >= 0)
  69.                 DecodeStr = des.substring(0, n);
  70.             else
  71.                 DecodeStr = des;
  72.         } catch (Exception ex) {
  73.             DecodeStr = "Exception/Message:".concat(String.valueOf(String
  74.                     .valueOf(ex.getMessage())));
  75.         }
  76.         return DecodeStr;
  77.     }
  78.     /**
  79.      * 加密字符串,
  80.      * 
  81.      * @param sSource
  82.      *            需要加密的源字符串
  83.      */
  84.     public String encryption(String sSource) {
  85.         String EncodeStr;
  86.         try {
  87.             if (sSource.length() == 0) {
  88.                 EncodeStr = "";
  89.                 String s = EncodeStr;
  90.                 return s;
  91.             }
  92.             String strKey = String.valueOf(String.valueOf((new StringBuffer(
  93.                     String.valueOf(String.valueOf(ENCODE_KEY1)))).append(
  94.                     ENCODE_KEY2).append(ENCODE_KEY3).append(ENCODE_KEY4)
  95.                     .append(ENCODE_KEY5).append(ENCODE_KEY6)));
  96.             int onenum = 1;
  97.             char onestr = (char) onenum;
  98.             for (; sSource.length() < 8; sSource = String.valueOf(sSource)
  99.                     + String.valueOf(onestr))
  100.                 ;
  101.             String des = "";
  102.             for (int n = 1; n <= sSource.length(); n++) {
  103.                 int code;
  104.                 int num1;
  105.                 char charcode;
  106.                 do {
  107.                     double myrandom = Math.random();
  108.                     code = (int) Math.round(myrandom * 100.0);
  109.                     for (num1 = sSource.charAt(n - 1); code > 0
  110.                             && ((code ^ num1) < 0 || (code ^ num1) > 90); code--)
  111.                         ;
  112.                     charcode = (char) code;
  113.                 } while (code <= 35 || code >= 122 || charcode == '|'
  114.                         || charcode == '/'' || charcode == ','
  115.                         || strKey.charAt(code ^ num1) == '|'
  116.                         || strKey.charAt(code ^ num1) == '/''
  117.                         || strKey.charAt(code ^ num1) == ',');
  118.                 charcode = (char) code;
  119.                 int num2 = sSource.charAt(n - 1);
  120.                 des = String.valueOf(String.valueOf((new StringBuffer(String
  121.                         .valueOf(String.valueOf(des)))).append(charcode)
  122.                         .append(strKey.charAt(code ^ num2))));
  123.             }
  124.             EncodeStr = des;
  125.         } catch (Exception ex) {
  126.             EncodeStr = "Exception/Message:".concat(String.valueOf(String
  127.                     .valueOf(ex.getMessage())));
  128.         }
  129.         return EncodeStr;
  130.     }
  131.     public static void main(String[] args) {
  132.         Cryption crp = new Cryption();
  133.         String eStr = crp.encryption("abc");// 将字符"abc"加密
  134.         System.out.println("字符‘abc’加密后       :" + eStr);
  135.         System.out.println("字符‘abc’加密后解密   :" + crp.decryption(eStr));// 将刚刚加密的字符解密
  136.     }
  137. }

程序输出:

字符‘abc’加密后       :/J5^XLP+?H[#AFV^
字符‘abc’加密后解密   :abc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值