zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    网页截图软件
    JavaScript的写类方式(3)
    XMLHttpRequest与script对比
    JavaScript的写类方式(5)
    Java方法传值和传引用
    变量的显示/隐式声明
    用递归实现十进制数转换N进制
    Javascript中克隆一个数组
    JavaScript1.6数组新特性和JQuery的几个工具方法
    HTML P不能包含块级元素(包括自身)
  • 原文地址:https://www.cnblogs.com/jasonlu1016/p/5227053.html
Copyright © 2011-2022 走看看