亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rijndael.java

?? ECLIPSE 3.3工程. AES算法的應(yīng)用.
?? JAVA
字號:
/*
 * 所有的字符串作為輸入時.
 * ***********************************************************
 * 在加密和解密的初始階段,輸入數(shù)組 in 按照下述規(guī)則復(fù)制到狀態(tài)矩陣中: s[r,c]=in[r+4c]
 * for 0 ≤ r < 4 且 0 ≤ c < Nb
 * 在加密和解密的結(jié)束階段,狀態(tài)矩陣將按照下述規(guī)則被復(fù)制到輸出數(shù)組 out 中: out[r+4c]=
 * s[r,c] for 0 ≤ r < 4 且 0 ≤ c < Nb
 */
public class Rijndael {
  /* 狀態(tài)包含的列(32-bit 字)的個數(shù)。對于AES,分組輸入為128bit時,Nb=4 */
  private final int Nb = 4;
  private String input = "";
  private String state = "";

  public Rijndael() {
  }
  public Rijndael(String state) {
    this.state = state;
    this.input = state;
  }
  /**
   * 字節(jié)變換,將一串輸入通過SBox變換輸出.
   * @param input
   *          type : 16Byte String .
   * @return state .type : 16Byte String .
   */
  public String subBytes(String input) {
    Operator op = new Operator();
    this.state = subBytes(op.ToByte(input));
    return this.state;
  }
  public String invSubBytes(String input) {
    Operator op = new Operator();
    this.state = invSubBytes(op.ToByte(input));
    return this.state;
  }
  public String invSubBytes(byte[] input) {
    SBox sBox = new SBox();
    int length = input.length;
    String Tstate = "";
    for (int i = 0; i < length; i++) {
      Tstate += (char) sBox.invSubByte((byte) input[i]);
    }
    return Tstate;
  }
  /**
   * 字節(jié)變換,將一串輸入通過SBox變換輸出.
   * @param input
   *          type : Byte[16]
   * @return state .type : 16Byte String .
   */
  public String subBytes(byte[] input) {
    SBox sBox = new SBox();
    int length = input.length;
    String Tstate = "";
    for (int i = 0; i < length; i++) {
      Tstate += (char) sBox.subByte((byte) input[i]);
    }
    return Tstate;
  }
  /**
   * 行移位.將16個字符看成4個字節(jié)為一列順序,組成的4*4的矩陣. *
   * 將輸入的矩陣的每行按行號(from 0)大小進(jìn)行循環(huán)左移.
   * @param input
   * @return state .type : 16Byte String .
   */
  public String shiftRows(String input) {
    this.state = "";
    byte[][] inputMatrix = new byte[4][Nb];
    byte[][] stateMatrix = new byte[4][Nb];
    stringToMatrix(input, inputMatrix);// 將字符串的輸入,放入一個矩陣.
    /*
     * 先按行操作.對輸入矩陣進(jìn)行操作,并復(fù)制給狀態(tài)矩陣.****************
     * 將行中的4個字節(jié),按行號(from 0)大小進(jìn)行循環(huán)左移
     */
    for (int r = 0; r < 4; r++) {
      // 行序
      for (int c = 0; c < Nb; c++) {
        // 列序
        stateMatrix[r][c] = inputMatrix[r][(c + r) % Nb];
      }
    }
    matrixToString(stateMatrix);// 將狀態(tài)矩陣輸入到字符串.
    /*
     * 置空,讓JRE自動處理內(nèi)存. inputMatrix = null; stateMatrix =
     * null;
     */
    return this.state;
  }
  /**
   * 逆算行移位.將16個字符看成4個字節(jié)為一列順序,組成的4*4的矩陣. *
   * 將輸入的矩陣的每行按行號(from 3 to 0)大小進(jìn)行循環(huán)右移.
   * @param input
   * @return state .type : 16Byte String .
   */
  public String invShiftRows(String input) {
    this.state = "";
    byte[][] inputMatrix = new byte[4][Nb];
    byte[][] stateMatrix = new byte[4][Nb];
    stringToMatrix(input, inputMatrix);// 將字符串的輸入,放入一個矩陣.
    /*
     * 先按行操作.對輸入矩陣進(jìn)行操作,并復(fù)制給狀態(tài)矩陣.****************
     * 將行中的4個字節(jié),按行號(from 3 to 0)大小進(jìn)行循環(huán)右移
     */
    for (int r = 0; r < 4; r++) {
      // 行序
      for (int c = 0; c < Nb; c++) {
        // 列序
        stateMatrix[r][c] = inputMatrix[r][(c - (r + 1) + Nb) % Nb];
      }
    }
    matrixToString(stateMatrix);// 將狀態(tài)矩陣輸入到字符串.
    /*
     * 置空,讓JRE自動處理內(nèi)存. inputMatrix = null; stateMatrix =
     * null;
     */
    return this.state;
  }
  /**
   * 將狀態(tài)矩陣輸入到字符串.以每列為單位.
   * @param matrix
   */
  private void matrixToString(byte[][] matrix) {
    /* 先按列操作. 將狀態(tài)矩陣的元素賦給字符串. */
    for (int c = 0; c < Nb; c++) {
      // 列序
      for (int r = 0; r < 4; r++) {
        // 行序
        this.state += (char) matrix[r][c];
      }
    }
  }
  /**
   * 將字符串的輸入,放入一個矩陣. 每4字節(jié)為單位先按每列進(jìn)行放.
   * @param input
   * @param matrix
   */
  private void stringToMatrix(String input, byte[][] matrix) {
    /* 按每列操作. 將字符串放放輸入矩陣 */
    for (int c = 0; c < Nb; c++) {
      // 列序
      for (int r = 0; r < 4; r++) {
        // 行序
        matrix[r][c] = (byte) input.charAt(r + c * 4);
      }
    }
  }
  /**
   * 列混合.Hex {03,01,01,02}在行上按行號+1,即(1~4)循環(huán)右移.***
   * 相乘,按GF(2^8次)Mod.得到狀態(tài)矩陣.***********************
   * GF(8)=x^8+ x^4+x^3+x^1+1,Binary : 1 0001 1011.*
   * GF(8)= 11B(16進(jìn)制.).
   * @param input
   *          type : String
   * @return state .type : 16Byte String .
   */
  public String mixColumns(String input) {
    this.state = "";
    byte[][] aMatrix = new byte[4][4];// AES中定義的a(x).
    byte[] temp = { (byte) 0x03, (byte) 0x01, (byte) 0x01, (byte) 0x02 };
    /*
     * 循環(huán)右移. 移位個數(shù):1~4 , 賦給a(x)
     */
    for (int r = 0; r < 4; r++) {
      // 行序
      for (int c = 0; c < Nb; c++) {
        // 列序
        aMatrix[r][c] = temp[(c - (r + 1) + Nb) % Nb];
        // System.out.print((byte)aMatrix[r][c] + " ");
      }
      // System.out.println();
    }
    byte[][] inputMatrix = new byte[4][Nb];
    stringToMatrix(input, inputMatrix);// 賦給狀態(tài)矩陣
    Operator op = new Operator();
    byte[][] stateMatrix = new byte[4][Nb];
    for (int r = 0; r < Nb; r++) {
      for (int m = 0; m < 4; m++) {
        for (int q = 0; q < 4; q++) {
          stateMatrix[m][r] ^=
            op.mulByTwoPolynomials(aMatrix[m][q], inputMatrix[q][r]);
        }
      }
    }
    this.matrixToString(stateMatrix);// 將矩陣賦給字符串.
    return this.state;
  }
  /**
   * 逆算列混合.Hex
   * {0x0b,0x0d,0x09,0x0e}在行上按行號+1,即(1~4)循環(huán)右移.
   * 相乘,按GF(2^8次)Mod.得到狀態(tài)矩陣.***********************
   * GF(8)=x^8+ x^4+x^3+x^1+1,Binary : 1 0001 1011.*
   * GF(8)= 11B(16進(jìn)制.).
   * @param input
   *          type : String
   * @return state .type : 16Byte String .
   */
  public String invMixColumns(String input) {
    this.state = "";
    byte[][] aMatrix = new byte[4][4];// AES中定義的a(x).
    byte[] temp = { (byte) 0x0b, (byte) 0x0d, (byte) 0x09, (byte) 0x0e };
    /*
     * 循環(huán)右移. 移位個數(shù):1~4 , 賦給a(x)
     */
    for (int r = 0; r < 4; r++) {
      // 行序
      for (int c = 0; c < Nb; c++) {
        // 列序
        aMatrix[r][c] = temp[(c - (r + 1) + Nb) % Nb];
        // System.out.print((byte)aMatrix[r][c] + " ");
      }
      // System.out.println();
    }
    byte[][] inputMatrix = new byte[4][Nb];
    stringToMatrix(input, inputMatrix);// 賦給狀態(tài)矩陣
    Operator g = new Operator();
    byte[][] stateMatrix = new byte[4][Nb];
    for (int r = 0; r < Nb; r++) {
      for (int m = 0; m < 4; m++) {
        for (int q = 0; q < 4; q++) {
          stateMatrix[m][r] ^=
            g.mulByTwoPolynomials(aMatrix[m][q], inputMatrix[q][r]);
        }
      }
    }
    this.matrixToString(stateMatrix);// 將矩陣賦給字符串.
    return this.state;
  }
  /**
   * 加入輪密鑰.
   * @param input
   *          type : String
   * @return state .type : 16Byte String .
   */
  public String addRoundKey(String input, String key) {
    String mw = "";
    Operator g = new Operator();
    int keyc = key.length() / 4;
    byte[][] w = new byte[keyc][4];
    byte[][] k = new byte[keyc][4];
    g.ToByte(w, input);
    g.ToByte(k, key);
    for (int i = 0; i < keyc; i++) {
      w[i] = g.XOR(w[i], k[i]);
      mw += g.ToString(w[i]);
    }
    // System.out.println(mw);
    return mw;
  }
  /**
   * rijndael算法.合并了四步.
   * @param input
   * @return state .type : 16Byte String .
   */
  public String rijndael(String input, String key) {
    this.state = addRoundKey(input, key);
    Key K = new Key();
    for (int i = 1; i <= 10; i++) {
      key = K.SKey(key, i);
      this.state = subBytes(this.state);
      this.state = shiftRows(this.state);
      if (i < 10) {
        this.state = mixColumns(this.state);
      }
      this.state = addRoundKey(this.state, key);
    }
    return this.state;
  }
  public static void main(String[] args) {
    Rijndael r = new Rijndael();
    String input = "";
    String key = "";
    byte[] input1 =
      { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, (byte) 0x88,
          (byte) 0x99, (byte) 0xaa, (byte) 0xbb, (byte) 0xcc, (byte) 0xdd,
          (byte) 0xee, (byte) 0xff };
    byte[] key1 =
      { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b,
          0x0c, 0x0d, 0x0e, 0x0f };
    for (int i = 0; i <= 15; i++) {
      input += (char) input1[i];
      key += (char) key1[i];
    }
    String z = r.rijndael(input, key);
    System.out.println(z);
    for (int i = 0; i < z.length(); i++) {
      byte MN = (byte) z.charAt(i);
      System.out.print(Integer.toHexString(MN) + "****");
    }
  }
  public String getState() {
    return state;
  }
  private void setState(String state) {
    this.state = state;
  }
  public String getInput() {
    return input;
  }
  public void setInput(String input) {
    this.input = input;
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人在线综合网| www.欧美色图| 中文字幕五月欧美| 日韩欧美另类在线| 色综合久久久久综合体桃花网| 蜜臀99久久精品久久久久久软件 | 亚洲一区二区三区美女| 久久久精品tv| 91精品国产综合久久久蜜臀图片| 91免费小视频| 粉嫩av一区二区三区在线播放| 日韩1区2区日韩1区2区| 亚洲精品国产无天堂网2021 | 亚洲日本va在线观看| 久久久久久久精| 欧美videos中文字幕| 欧美日韩国产小视频在线观看| av不卡免费在线观看| 岛国一区二区在线观看| 欧美色区777第一页| 成人三级在线视频| 国产精品99久久久久久久女警| 三级精品在线观看| 亚洲va韩国va欧美va| 亚洲欧美韩国综合色| 国产精品久久久久aaaa| 中文在线免费一区三区高中清不卡| 欧美刺激脚交jootjob| 欧美日韩另类一区| 欧美天天综合网| 在线亚洲欧美专区二区| 91视频国产资源| 色综合天天在线| 91麻豆国产福利精品| av影院午夜一区| 色婷婷av一区二区三区大白胸| 成人黄色在线网站| 99久久久国产精品免费蜜臀| 成人激情小说网站| 成人app软件下载大全免费| 成人午夜私人影院| 99久久99久久综合| 色综合久久久久综合体| 欧美视频一区在线观看| 欧美性大战久久久久久久蜜臀| 色婷婷av一区二区| 91精品欧美久久久久久动漫| 欧美一区三区四区| 精品美女在线观看| 国产日韩欧美精品在线| 亚洲天堂中文字幕| 亚洲午夜免费电影| 日本在线观看不卡视频| 国内成人免费视频| 成人av动漫在线| 精品视频在线免费看| 日韩欧美国产精品| 中文字幕久久午夜不卡| 亚洲精品日产精品乱码不卡| 午夜视黄欧洲亚洲| 极品少妇xxxx精品少妇偷拍| 国产精品一线二线三线精华| 91一区二区在线观看| 欧美电影在线免费观看| 久久综合九色综合97婷婷| 国产精品国产三级国产普通话三级| 一区二区三区四区在线播放 | 91精品国产一区二区三区| 精品乱人伦小说| 国产精品日日摸夜夜摸av| 一区二区三区四区激情| 久久国内精品自在自线400部| 成人午夜又粗又硬又大| 亚洲精品日韩一| 老鸭窝一区二区久久精品| 岛国精品一区二区| 欧美精品精品一区| 欧美高清在线视频| 丝袜美腿亚洲色图| 国产·精品毛片| 欧美性一二三区| 欧美高清在线一区| 青青草伊人久久| 91免费观看视频在线| 欧美mv日韩mv国产网站| 18成人在线视频| 国产综合色精品一区二区三区| 91一区二区在线观看| 日韩一区二区精品| 亚洲女人小视频在线观看| 久久精品国产亚洲5555| 日本二三区不卡| 国产亚洲一区二区在线观看| 亚洲成a人v欧美综合天堂下载 | 欧美日韩精品三区| 国产精品美女久久久久久2018| 日韩精品乱码av一区二区| 99视频精品在线| 欧美精品一区二区三区四区| 亚洲r级在线视频| 成人国产电影网| 精品国产3级a| 日本成人在线电影网| 一本一道久久a久久精品| 久久久美女艺术照精彩视频福利播放| 亚洲一区二区三区中文字幕在线| 成人黄色国产精品网站大全在线免费观看 | 久久国产夜色精品鲁鲁99| 91精品91久久久中77777| 国产女人aaa级久久久级| 男男gaygay亚洲| 欧美日免费三级在线| 国产精品视频一二三区| 国产一区二区三区精品视频| 欧美一区二区黄色| 亚洲v精品v日韩v欧美v专区| 色欧美日韩亚洲| 亚洲欧美一区二区不卡| 成人午夜视频福利| 久久精品在线观看| 国产一区二区导航在线播放| 日韩欧美久久久| 青椒成人免费视频| 日韩一区二区在线观看| 亚洲国产人成综合网站| 91行情网站电视在线观看高清版| 亚洲色欲色欲www在线观看| 粉嫩高潮美女一区二区三区| 亚洲国产高清在线观看视频| 国产河南妇女毛片精品久久久| 精品国产污网站| 国产一区三区三区| 欧美国产综合色视频| 久久你懂得1024| 国产精品 欧美精品| 欧美国产精品久久| jiyouzz国产精品久久| 亚洲精品国产a久久久久久 | 欧美精品自拍偷拍动漫精品| 婷婷成人激情在线网| 欧美精品第1页| 日韩不卡一区二区| 欧美不卡一区二区三区四区| 久久国产精品一区二区| 久久日韩精品一区二区五区| 国产一区二区免费在线| 欧美激情综合五月色丁香小说| 成人国产电影网| 一区二区三区加勒比av| 欧美美女黄视频| 久久国产福利国产秒拍| 久久这里都是精品| 高清不卡在线观看av| 亚洲激情av在线| 91精品国产色综合久久不卡蜜臀| 精品一区二区三区在线视频| 国产精品天干天干在线综合| 91极品视觉盛宴| 免费人成黄页网站在线一区二区| 久久久久久久电影| 色婷婷综合中文久久一本| 日韩va欧美va亚洲va久久| 久久久久久久久久看片| 91啪亚洲精品| 六月丁香婷婷久久| 国产精品拍天天在线| 欧美偷拍一区二区| 国产麻豆91精品| 亚洲一区av在线| 久久综合九色综合97婷婷| 色综合中文字幕国产| 婷婷一区二区三区| 久久蜜桃一区二区| 色综合咪咪久久| 激情深爱一区二区| 亚洲在线视频一区| 久久久精品国产99久久精品芒果| 欧美中文字幕一区二区三区| 精品亚洲porn| 一区二区三区国产精华| 久久新电视剧免费观看| 欧美亚洲综合网| 高清av一区二区| 青椒成人免费视频| 亚洲男帅同性gay1069| 日韩精品一区二区三区老鸭窝| 91丝袜高跟美女视频| 国内精品久久久久影院一蜜桃| 亚洲精品欧美激情| 国产欧美综合在线观看第十页| 欧美日韩成人在线| 91无套直看片红桃| 国产99久久精品| 久久精品国产网站| 天天影视网天天综合色在线播放| 国产精品国产三级国产普通话蜜臀 | 国产成人夜色高潮福利影视| 午夜精品久久久久久久99樱桃| 国产精品视频九色porn| 精品国产乱子伦一区|