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