java 各种加密算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

以上是关于java 各种加密算法的主要内容,如果未能解决你的问题,请参考以下文章

java 各种加密算法

各种Java加密算法

(java加密解密)如何实现JCE接口的各种算法??

Java执行js加密算法

java加密算法入门-算法概念及单向加密

可以解密加密数据的片段吗?