java实现的AES秘钥生成算法示例
本文实例讲述了java实现的AES秘钥生成算法。分享给大家供大家参考,具体如下:
importjava.security.NoSuchAlgorithmException;
importjava.security.SecureRandom;
importjavax.crypto.KeyGenerator;
importjavax.crypto.SecretKey;
publicclassTest{
publicstaticvoidmain(String[]args){
getKey();
getKeyByPass();
}
/**
*随机生成秘钥
*/
publicstaticvoidgetKey(){
try{
KeyGeneratorkg=KeyGenerator.getInstance("AES");
kg.init(128);
//要生成多少位,只需要修改这里即可128,192或256
SecretKeysk=kg.generateKey();
byte[]b=sk.getEncoded();
Strings=byteToHexString(b);
System.out.println(s);
System.out.println("十六进制密钥长度为"+s.length());
System.out.println("二进制密钥的长度为"+s.length()*4);
}
catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
System.out.println("没有此算法。");
}
}
/**
*使用指定的字符串生成秘钥
*/
publicstaticvoidgetKeyByPass(){
//生成秘钥
Stringpassword="testkey";
try{
KeyGeneratorkg=KeyGenerator.getInstance("AES");
//kg.init(128);//要生成多少位,只需要修改这里即可128,192或256
//SecureRandom是生成安全随机数序列,password.getBytes()是种子,只要种子相同,序列就一样,所以生成的秘钥就一样。
kg.init(128,newSecureRandom(password.getBytes()));
SecretKeysk=kg.generateKey();
byte[]b=sk.getEncoded();
Strings=byteToHexString(b);
System.out.println(s);
System.out.println("十六进制密钥长度为"+s.length());
System.out.println("二进制密钥的长度为"+s.length()*4);
}
catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
System.out.println("没有此算法。");
}
}
/**
*byte数组转化为16进制字符串
*@parambytes
*@return
*/
publicstaticStringbyteToHexString(byte[]bytes){
StringBuffersb=newStringBuffer();
for(inti=0;i<bytes.length;i++){
StringstrHex=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);
}
}
}
returnsb.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
在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode
希望本文所述对大家java程序设计有所帮助。