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 }
  • 相关阅读:
    long和Long的区别
    C语言的变量的内存分配
    Java蓝桥杯 算法提高 九宫格
    Java实现 蓝桥杯算法提高金明的预算方案
    Java实现 蓝桥杯 算法提高 新建Microsoft world文档
    Java实现 蓝桥杯 算法提高 快乐司机
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
  • 原文地址:https://www.cnblogs.com/jasonlu1016/p/5227053.html
Copyright © 2011-2022 走看看