欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java实现的AES秘钥生成算法示例

程序员文章站 2024-03-09 12:31:29
本文实例讲述了java实现的aes秘钥生成算法。分享给大家供大家参考,具体如下: import java.security.nosuchalgorithmexce...

本文实例讲述了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/createstrongpassword

迅雷、快车、旋风url加密/解密工具:

在线散列/哈希算法加密工具:

在线md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:

在线sha1/sha224/sha256/sha384/sha512加密工具:

希望本文所述对大家java程序设计有所帮助。