java 各种加密算法

  1 import java.math.BigInteger;
  2 import java.security.InvalidKeyException;
  3 import java.security.MessageDigest;
  4 import java.security.NoSuchAlgorithmException;
  5 import javax.crypto.KeyGenerator;
  6 import javax.crypto.Mac;
  7 import javax.crypto.SecretKey;
  8 import javax.crypto.spec.SecretKeySpec;
  9 import org.apache.commons.codec.binary.Base64;
 10 
 11 public class MyEncrypt {
 12 public static final String KEY_SHA = "SHA";
 13 public static final String KEY_MD5 = "MD5";
 14 public static final String KEY_MAC = "HmacMD5";
 15 
 16 
 17 // sun不推荐使用它们自己的base64,用apache的挺好
 18 /**
 19 * BASE64解密
 20 */
 21 public static byte[] decryptBASE64(byte[] dest) {
 22 if (dest == null) {
 23 return null;
 24 }
 25 return Base64.decodeBase64(dest);
 26 }
 27 
 28 /**
 29 * BASE64加密
 30 */
 31 public static byte[] encryptBASE64(byte[] origin) {
 32 if (origin == null) {
 33 return null;
 34 }
 35 return Base64.encodeBase64(origin);
 36 }
 37 
 38 /**
 39 * MD5加密
 40 * 
 41 * @throws NoSuchAlgorithmException
 42 */
 43 public static byte[] encryptMD5(byte[] data)
 44 throws NoSuchAlgorithmException {
 45 if (data == null) {
 46 return null;
 47 }
 48 MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
 49 md5.update(data);
 50 return md5.digest();
 51 }
 52 
 53 /**
 54 * SHA加密
 55 * 
 56 * @throws NoSuchAlgorithmException
 57 */
 58 public static byte[] encryptSHA(byte[] data)
 59 throws NoSuchAlgorithmException {
 60 if (data == null) {
 61 return null;
 62 }
 63 MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
 64 sha.update(data);
 65 return sha.digest();
 66 }
 67 
 68 /**
 69 * 初始化HMAC密钥
 70 * 
 71 * @throws NoSuchAlgorithmException
 72 */
 73 public static String initMacKey() throws NoSuchAlgorithmException {
 74 KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
 75 SecretKey secretKey = keyGenerator.generateKey();
 76 return new String(encryptBASE64(secretKey.getEncoded()));
 77 }
 78 
 79 /**
 80 * HMAC加密
 81 * 
 82 * @throws NoSuchAlgorithmException
 83 * @throws InvalidKeyException
 84 */
 85 public static byte[] encryptHMAC(byte[] data, String key)
 86 throws NoSuchAlgorithmException, InvalidKeyException {
 87 SecretKey secretKey = new SecretKeySpec(decryptBASE64(key.getBytes()),
 88 KEY_MAC);
 89 Mac mac = Mac.getInstance(secretKey.getAlgorithm());
 90 mac.init(secretKey);
 91 return mac.doFinal(data);
 92 
 93 }
 94 
 95 public static void main(String[] args) throws Exception {
 96 // TODO Auto-generated method stub
 97 String data = "简单加密";
 98 System.out.println(new BigInteger(encryptBASE64(data.getBytes())).toString(16));
 99 System.out.println(new BigInteger(encryptBASE64(data.getBytes())).toString(32));
100 System.out.println(new String(decryptBASE64(encryptBASE64(data.getBytes()))));
101 
102 System.out.println(new BigInteger(encryptMD5(data.getBytes())).toString());
103 System.out.println(new BigInteger(encryptSHA(data.getBytes())).toString());
104 
105 System.out.println(new BigInteger(encryptHMAC(data.getBytes(), initMacKey())).toString());
106 }
107 
108 }

 

转载于:https://www.cnblogs.com/jasonlu1016/p/5227053.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值