继续谈谈java中的Key
程序员文章站
2022-06-14 19:42:19
...
1.KeyGenerator的使用。
如下
static Key genKey(byte[] key){ //获取AES算法的KeyGenerator实例对象 KeyGenerator kg = KeyGenerator.getInstance("AES"); //获取SecureRandom对象 SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); //设置种子 random.setSeed(key); //初始化key生成器 kg.init(128, random); //获取秘钥对象 SecretKey secretKey = kg.generateKey(); //获取秘钥字节数组 byte[] enCodeFormat = secretKey.getEncoded(); //返回使用AES秘钥加密的对象 return new SecretKeySpec(enCodeFormat,"AES"); }
2 MessageDigest类使用,
消息摘要是采用任意大小的数据并输出固定长度散列值的安全单向散列函数
javadoc中支持的算法有:
<p> Every implementation of the Java platform is required to support * the following standard {@code MessageDigest} algorithms: * <ul> * <li>{@code MD5}</li> * <li>{@code SHA-1}</li> * <li>{@code SHA-256}</li> * </ul>
但是java平台支持的摘要算法远远不止这些。
//MessageDigest对象初始化
MessageDigest md = MessageDigest.getInstance("MD5");
//摘要计算
byte[] result = md.digest(byte[] data)
SHA-256 加密返回的字节数组长度固定为32,一个字节长度是8位 ,32*8=256位,SHA256 算法的哈希值大小为 256 位。
以下两段代码的意思一样:
//转为两位的16进制 byte b = -5; //将一个负数转化为256+b Integer.toString(( b & 0xff) + 0x100, 16).subString(1) //转为两位的16进制 String str; String tempStr = (Integer.toHexString(b & 0xff)); if (tempStr.length() == 1) { str = str + "0" + tempStr; } else { str = str + tempStr; }
推荐阅读
-
在tinkphp中volist双层循环,第一层的<{key}>增么放到第二回也能用呢
-
Java代理模式中的静态代理和动态代理
-
有关Java中的BeanInfo介绍
-
java8中java.time.LocalDateTime的json格式化
-
java中Memcached的使用实例(包括与Spring整合)
-
JAVASE 小白学习笔记 (12-3)Java中的常用类--StringBuffer类、StringBuilder类
-
关于Java中的顶层类修饰问题
-
JAVA多线程中join()方法的使用方法
-
java中join方法的理解与说明详解
-
php-Arrays函数-array_key_exists-检查给定的键名或索引是否存在于数组中_PHP教程