JAva実装のAES鍵生成アルゴリズムの例

3167 ワード

この例ではjava実装のAES鍵生成アルゴリズムについて説明する.皆さんの参考にしてください.具体的には以下の通りです.

import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class Test {
  public static void main(String[] args) {
    getKey();
    getKeyByPass();
  }
  /**
  *       
  */
  public static void getKey() {
    try {
      KeyGenerator kg = KeyGenerator.getInstance("AES");
      kg.init(128);
      //      ,         128, 192 256
      SecretKey sk = kg.generateKey();
      byte[] b = sk.getEncoded();
      String s = byteToHexString(b);
      System.out.println(s);
      System.out.println("         "+s.length());
      System.out.println("         "+s.length()*4);
    }
    catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
      System.out.println("     。");
    }
  }
  /**
  *             
  */
  public static void getKeyByPass() {
    //    
    String password="testkey";
    try {
      KeyGenerator kg = KeyGenerator.getInstance("AES");
      // kg.init(128);//      ,         128, 192 256
      //SecureRandom          ,password.getBytes()   ,      ,     ,          。
      kg.init(128, new SecureRandom(password.getBytes()));
      SecretKey sk = kg.generateKey();
      byte[] b = sk.getEncoded();
      String s = byteToHexString(b);
      System.out.println(s);
      System.out.println("         "+s.length());
      System.out.println("         "+s.length()*4);
    }
    catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
      System.out.println("     。");
    }
  }
  /**
  * byte     16     
  * @param bytes
  * @return
  */
  public static String byteToHexString(byte[] bytes) {
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < bytes.length; i++) {
      String strHex=Integer.toHexString(bytes[i]);
      if(strHex.length() > 3) {
        sb.append(strHex.substring(6));
      } else {
        if(strHex.length() < 2) {
          sb.append("0" + strHex);
        } else {
          sb.append(strHex);
        }
      }
    }
    return sb.toString();
  }
}


PS:暗号解読に興味のある方は、当駅のオンラインツールも参考にしてください.
パスワードセキュリティのオンライン検出:http://tools.jb51.net/password/my_password_safe
高強度パスワードジェネレータ:http://tools.jb51.net/password/CreateStrongPassword
迅雷、急行、サイクロンURL暗号化/復号ツール:http://tools.jb51.net/password/urlrethunder
オンラインハッシュ/ハッシュアルゴリズム暗号化ツール:http://tools.jb51.net/password/hash_encrypt
オンラインMD 5/hash/SAH-1/SAH-2/SAH-256/SAH-512/SAH-3/RIPEMD-160暗号化ツール:http://tools.jb51.net/password/hash_md5_sha
オンラインsha 1/sha 224/sha 256/sha 384/sha 512暗号化ツール:http://tools.jb51.net/password/sha_encode
本文で述べたjavaプログラム設計に役立つことを願っています.