• 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 }
  • 相关阅读:
    MySQL创建用户并修改权限
    Jenkins触发项目构建
    dotnet-cnblogs-tool使用与坑
    Jenkins集成Jmeter接口测试(Freestyle Project)
    Jenkins发送邮件没有解析变量
    JMeter + Maven in Jenkins
    Charles&Fiddler 对手机捉包失败原因分析
    Postman 脚本
    Selenium+Chrome浏览器自动加载Flash
    idea上进行远程调试项目步骤纪录
  • 原文地址:https://www.cnblogs.com/jasonlu1016/p/5227053.html
Copyright © 2020-2023  润新知