继续谈谈java中的Key

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;
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值