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程序设计有所帮助。