一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - 128進制加密數(shù)據(jù)示例分享

128進制加密數(shù)據(jù)示例分享

2019-11-15 14:35java教程網(wǎng) JAVA教程

這篇文章主要介紹了128進制加密數(shù)據(jù)示例,這里使用JAVA實現(xiàn),需要的朋友可以參考下

128進制加密數(shù)據(jù),可以自定符號表,使用自己喜歡的符號做加密

 

復(fù)制代碼代碼如下:


?package com.wmly.enc;

 

import java.util.HashMap;

/**
 * 128進制加解密, 一個符號可表示7個bit
 * 可以自定義符號表, 符號不能重復(fù)
 */
public class MyBASE128 {

 public static final char[] symbolTable = new char[128];
 public static final HashMap<Character, Integer> indexTable = new HashMap<>(128);
 static {
  int i = 0;
  for (int j = 0; j < 128; j++) {
//   symbolTable[j] = (char) j;
   if('A' <= j && j <= 'Z'
    || 'a' <= j && j <= 'z'
    || '0' <= j && j <= '9') {
    symbolTable[i++] = (char) j;
   }
  }
  for (char c : "這是中國人寫地[備思要愛發(fā)]編解碼程序&擁有獨特的自定義符號表|不過布能使用重復(fù)字,汗啊(還差一十二個知*.#)。為我們加油吧,親!".toCharArray()) {
   symbolTable[i++] = c;
  }

  checkTable();

  for (int j = 0; j < 128; j++) {
   indexTable.put(symbolTable[j], j);
  }
 }

 private static void checkTable() throws Error {
  if(symbolTable[127] == 0) {
   throw new Error("符號表長度不正確!");
  }
  for (char a : symbolTable) {
   int count = 0;
   for (char b : symbolTable) {
    if(a == b) {
     count++;
    }
   }
   if(count > 2) {
    throw new Error("符號表有重復(fù)符號!");
   }
  }
 }

 public String encode(byte[] data) {
  if(data == null || data.length == 0) {
   return new String();
  }
  StringBuilder result = new StringBuilder();
  int tail = 0;
  for (int i = 0; i < data.length; i++) {
   int mov = (i % 7 + 1);
   int curr = 0xFF & data[i];
   int code = tail + (curr >> mov);
   result.append(symbolTable[code]);
   tail = (0xFF & (curr << (8 - mov))) >> 1;
   if(mov == 7) {
    result.append(symbolTable[tail]);
    tail = 0;
   }
  }
  result.append(symbolTable[tail]);
  return result.toString();
 }

 public byte[] decode(String base128) {
  if(base128 == null || base128.length() == 0) {
   return new byte[] { };
  }
  int length = (int) Math.floor(base128.length() * 0.875);
  byte[] result = new byte[length];
  int idx = 0;
  int head = indexTable.get(base128.charAt(0)) << 1;
  for (int i = 1; i < base128.length();) {
   int mod = i % 8;
   int code = indexTable.get(base128.charAt(i++));
   result[idx++] = (byte) (0xFF & (head + (code >> (7 - mod))));
   if(mod == 7) {
    head = 0xFF & (indexTable.get(base128.charAt(i++)) << 1);
   } else {
    head = 0xFF & (code << (mod + 1));
   }
  }
  return result;
 }

 ///////////////////////測試方法///////////////////////////////
 public static void main(String[] args) {
  MyBASE128 base128 = new MyBASE128();
  test(base128);

  String txt = "這是我的加解密測試";
  String enc = base128.encode(txt.getBytes());
  System.out.println(enc);
  System.out.println("----------------");
  System.out.println(new String(base128.decode(enc)));
 }

 private static void test(MyBASE128 base128) {
  for (int i = 0; i < 10000; i++) {
   String r = randomData();
   String d = new String(base128.decode(base128.encode(r.getBytes())));
   if(!r.equals(d)) {
//    d = new String(base128.decode(base128.encode(r.getBytes())));
    System.out.println("加解密失敗!: " + r);
   }
  }
 }

 private static String randomData() {
  String textString = "了咖啡機累啊戴假發(fā)\n\r哦-";
  int start = random(0, textString.length() - 3);
  int end = random(start + 1, textString.length() - 1);
  return textString.substring(start, end);
 }

 private static int random(int i, int j) {
  return (int) Math.ceil(Math.random()*(j-i)+i);
 }
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费一级欧美片在线观看 | 国产 国语对白 露脸正在播放 | 国产手机在线αⅴ片无码观看 | 亚洲国产美女精品久久 | 精品久久久久久无码人妻国产馆 | 3d肉浦团在线观看 | 欧美日韩在线观看区一二 | 国产思妍小仙女一二区 | 国产一区私人高清影院 | 婚色阿花在线全文免费笔 | 消息称老熟妇乱视频一区二区 | 国内精品久久久久小说网 | 热国产热综合 | 欧美一区二区三区大片 | gay男强壮军人chinese | 欧美综合一区二区三区 | 黑人巨大和日本娇小中出 | 日本伊人久久 | 美女靠逼免费网站 | 三级午夜宅宅伦不卡在线 | 国内精品视频一区二区三区八戒 | 久久综合狠狠综合狠狠 | 91视频国产精品 | 国产东北三老头伦一肥婆 | 91精品婷婷国产综合久久8 | 午夜福利自怕 | 满溢游泳池免费土豪全集下拉版 | 久久福利影院 | 亚洲精品视频久久 | 男男双性生子产乳高辣h | 成人女人天堂午夜视频 | 女人张开腿让男人桶视频免费大全 | 狠狠涩| 纲手被强喷水羞羞漫画 | 欧美视频一区二区三区在线观看 | 15同性同志18 | 成人18网址在线观看 | 国产精品视频一区二区三区w | 国产亚洲精品第一综合linode | 嫩草视频在线观看视频播放 | 国产黄色大片网站 |