数据加密解密处理


//数据加密解密处理
public class Crypt {
  /**
   * ENCODERTEXT
   */
  static final String ENCODERTEXT = "lsdfoglkwjemc-091324jlkmsda-0sd=1234;l;lsdkOPIER203-4LKJSLDJAS0D925JKNNC,MANSLDJQ32ELK1N4SAIp089er0234lkjo9df82l3kjlknf,nzxc,mn;lasdj9wquelq;d]qowe[;wq;qkwellsdkfj0-0POPOAR0W8RPOp-02@#$sdklj$#)0asdlksadLKJFA9820934)(&$3ij09sdj34-sdfj2po345-09dlkfjlkv,mxncv;laskdkl/a;au093hakjh2389~!@%&*%#&^539478(*&)^(&^_*8-*_+++|78w3ihsdnmnclksdj)(*#%*_@$(+#@$)&@#^*&^#@$()(*#@$HDFIkdhfgkjh098k;ldsk.sdv.c,msd;flkp0w34;2lk-=sd0p121o39-werl2k3;4lj09sdflskjlekfj,mv,mcxvjlksjdflksjdl*(#@!&akhduyqweperilmmdxcasnd*(#@9879327kjhasudfewr kwehriwueyrhc ausdgiq7w8e71 cdsh93ol2q32879y8932qwhdkjanhdskjaoe*&w#jh$)(*dsFshc na89wue32e981yewher12(*&#quds)(*i3o1928osaihdaklsdkalkduqowe3290874kljhklasdhlijhqweio4hwe89(*$#$eriho349oij(#*q$OIJHO)(&*#$_)(IUDSOIUoiOIUSAODFU034liusdrogiuet0lsdmc,.mg;lq-091lk3l;kjsdf--123098fe*(JOKJSFD983345oihjdp0(#*$&#@!HKJH!(@#*&ioysdk@#)uhOA7E98R7239845K(*&(#@*$&HKFDJHWERYIWoi)(*&#@&^%@!dsfoi;.;,p[osklejr230897*(&we2&^%@78*(&#@!(7~&*~^@*&^#(*&auroiqkjwrhoasdf89qlrlkjpour09werk23jh"
      ;

  public Crypt() {
  }
  /**
   * @param str String
   * @return String
   */
  public String encrypt(String str) {
    int i, j;
    int seed = ((int) (Math.random() * 255)); //Random1(255);
    int pre = seed & 3;
    int len = str.length();
    int elen = ENCODERTEXT.length();
    String ret = "";
    ret += encodeChar(seed);
    ret += encodeChar((((int) (Math.random() * 255)) & 0xfc) + pre);
    for (i = 0; i < pre; i++) {
      ret += encodeChar((int) (Math.random() * 255));

    }
    for (i = 0, j = seed; i < len; i++) {
      ret += encodeChar((int) ((str.substring(i, i + 1)).getBytes()[0])
          ^ (int) (ENCODERTEXT.substring(j, j + 1).getBytes()[0]));
      if (++j >= elen) {
        j = 0;
      }
    }
    return ret;
  }

  private String encodeChar(int c) { //Writed by Daniel
    String s = "";
    int x = (int) (c / 16);
    if (x > 9) {
      s += (char) (x - 10 + 0x61);
    } else {
      s += x;

    }
    x = c % 16;
    if (x > 9) {
      s += (char) (x - 10 + 0x61);
    } else {
      s += x;

    }
    return s;
  }

  //add by Randy at 02/27/2002 for office floder password
  /**
   * @param str String
   * @return String
   */
  public String decrypt(String str) {
    int seed = decodeChar(str, 0);
    if (!isNaN(seed)) {
      return "";
    }
    int pre = decodeChar(str, 2);
    if (!isNaN(pre)) {
      return "";
    }
    pre = pre & 3;

    String ret = "";
    long x;
    int i, j;
    int len = str.length();
    int elen = ENCODERTEXT.length();

    for (i = pre + pre + 4, j = seed; i < len; i += 2) {
      x = decodeChar(str, i);
      if (!isNaN(x)) {
        return "";
      }
      byte ch = (byte) ENCODERTEXT.charAt(j);
      x ^= ch;
      ret += (char) x;
      if (++j >= elen) {
        j = 0;
      }
    }

    return ret;
  }

  private int decodeChar(String str, int i) {
    try {
      return Integer.parseInt(str.substring(i, i + 2), 16);
    } catch (NumberFormatException err) {
      return -1;
    }
  }

  private boolean isNaN(long num) {

    if (num < 0) {
      return false;
    }
    return true;

  }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值