Chenda1 发表于 2022-3-30 23:12

算法基础(消息摘要算法)

本帖最后由 18077484116 于 2022-3-30 23:27 编辑

消息摘要算法
常见算法
MD5
SHA1
SHA256
SHA512
HmacMD5
HmacSHA1
HmacSHA256
验证结果时通常进行文本比对
密文不可逆|定长   常用于验证文件完整性、签名sign
MD系列算法

MD2
MD5Java 6 实现
MD4 Bouncy Castle 实现

//初始化MessageDigest,并指定MD5算法
MessageDigest md=MessageDigest.getInstance("MD5");
//摘要处理
byte[] b =md.digest(data);
md.update("xx".getBytes());相当于data

SHA系列算法

SHA-1
SHA-256
SHA-384
SHA-512 Java 6 实现
SHA-224 Bouncy Castle 实现


//初始化MessageDigest,并指定SHA算法
MessageDigest md=MessageDigest.getInstance("SHA-1 ");
//摘要处理
byte[] b =md.digest(data);
md.update("xx".getBytes());相当于data
MAC算法(消息认证码算法)

HmacMD5
HmacSHA1
HmacSHA256
HmacSHA384
HmacSHA512 Java 6 实现
HmacMD2
HmacMD4
HmacSHA224 Bouncy Castle 实现

//初始化KeyGenerator
KeyGenerator keyGenerator = keyGenerator.getInstance("HmacMD5");
//产生密钥
SecretKey secretKey = keyGenerator.generateKey();
//获得密钥
byte[] key = secretKey.getEncoded();
//还原密钥
SecretKey secretKey = new SecretKeySpec(key,"HmacMD5");
//实例化Mac
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
//初始化Mac
mac.init(secretKey);
//执行消息摘要
byte[] data =mac.doFinal(data);



页: [1]
查看完整版本: 算法基础(消息摘要算法)