Java安全之保证消息的完整性

消息摘要算法:
  ·MD2 和MD5,它们都是128 位算法
  ·SHA-1 是160 位算法
  ·SHA-256、SHA-383 和SHA-512 提供更长的指纹,大小分别是256 位、383 位和512 位
  MD5 和SHA-1 是最常用的算法。

 

 

 

package com.demo.s;

import java.security.MessageDigest;

/**
 *
 * 保证信息的完整性.
 * 消息摘要是一种确保消息完整性的功能。
 * 消息摘要获取消息作为输入并生成位块(通常是几百位长),
 * 该位块表示消息的指纹。
 * 消息中很小的更改(比如说,由闯入者和窃听者造成的更改)
 * 将引起指纹发生显著更改。
 *
 */
public class MessageDigestExample {
 public static void main(String[] args) throws Exception {

  if (args.length != 1) {
   System.err.println("Usage: java MessageDigestExample text");
   System.exit(1);
  }
  byte[] plainText = args[0].getBytes("UTF8");

  MessageDigest messageDigest = MessageDigest.getInstance("MD5");

  System.out.println("/n" + messageDigest.getProvider().getInfo());
  messageDigest.update(plainText);
  System.out.println("/nDigest: ");
  System.out.println(new String(messageDigest.digest(), "UTF8"));
 }

}

/**

*/

package com.demo.s;

import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
/**
 *
 * 保证信息的完整性.
 * 如果密钥被用作消息摘要生成过程的一部分,则将该算法称为消息认证码。
 *
 */
public class MessageAuthenticationCodeExample {
 public static void main(String[] args) throws Exception {

  if (args.length != 1) {
   System.err
     .println("Usage: java MessageAuthenticationCodeExample text");
   System.exit(1);
  }
  byte[] plainText = args[0].getBytes("UTF8");
  System.out.println("开始");
  System.out.println("/nStart generating key");
  KeyGenerator keyGen = KeyGenerator.getInstance("HmacMD5");
  SecretKey MD5key = keyGen.generateKey();
  System.out.println("Finish generating key");
  Mac mac = Mac.getInstance("HmacMD5");
  mac.init(MD5key);
  mac.update(plainText);
  System.out.println("/n" + mac.getProvider().getInfo());
  System.out.println("/nMAC: ");
  System.out.println(new String(mac.doFinal(), "UTF8"));
  System.out.println("结束");
 }
}
 

你可能感兴趣的:(java,算法,exception,String,Class,byte)