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 }
时间: 2024-08-02 18:07:46

java 各种加密算法的相关文章

java单向加密算法小结(1)--Base64算法

java单向加密算法小结(1)--Base64算法 从这一篇起整理一下常见的加密算法以及在java中使用的demo,首先从最简单的开始. 简单了解 Base64严格来说并不是一种加密算法,而是一种编码/解码的实现方式. 我们都知道,数据在计算机网络之间是使用字节流的方式进行传递的,所有的信息都要最终转换为0101的二进制,这本身就涉及到编码,解码的应用. Base64,顾名思义,是使用了64个基本的字符来对任意数据进行编码的一种实现方式,那既然有Base64,是不是也有Base32,Base16

JAVA 上加密算法的实现用例---转载

通常 , 使用的加密算法 比较简便高效 , 密钥简短,加解密速度快,破译极其困难.本文介绍了 MD5/SHA1,DSA,DESede/DES,Diffie-Hellman 的使用. 第 1 章基础知识 1.1. 单钥密码体制 单钥密码体制是一种传统的加密算法,是指信息的发送方和接收方共同使用同一把密钥进行加解密. 通常 , 使用的加密算法 比较简便高效 , 密钥简短,加解密速度快,破译极其困难.但是加密的安全性依靠密钥保管的安全性 , 在公开的计算机网络上安全地传送和保管密钥是一个严峻的问题,并

Java非对称加密算法--RSA加密算法

Java非对称加密算法--RSA加密算法          RSA加密算法是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用.RSA是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.当时他们三人都在麻省理工学院工作.RSA就是他们三人姓氏开头字母拼在一起组成的. 1973年,在英国政府通讯总部工作的数学家克利福德·柯克斯(Clifford Cocks)在一个内部文件中提出了一个相

java HMAC_SHA1加密算法

java HMAC_SHA1加密算法 CreationTime--2018年7月14日16点46分 Author:Marydon 1.准备工作 import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import org.apache.log4j.Logger; /** * HMAC_SHA1加密算法工具类 * @explain 不可逆算法 * @author

Java基本加密算法

简单的java加密算法有: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) HMAC(Hash Message Authentication Code,散列消息鉴别码) 1. BASE64 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于

java常用加密算法

常用加密算法的Java实现(一) ——单向加密算法MD5和SHA 日期:2014/6/1 文:阿蜜果 1.Java的安全体系架构 1.1           Java的安全体系架构介绍 Java中为安全框架提供类和接口.JDK 安全 API 是 Java 编程语言的核心 API,位于 java.security包(及其子包),以及sun.securityAPI包(及其子包)中.设计用于帮助开发人员在程序中同时使用低级和高级安全功能. JDK 1.1 中第一次发布的 JDK 安全中引入了“Java

Java RSA加密算法生成公钥和私钥

原文:http://jingyan.baidu.com/article/6dad5075f33466a123e36ecb.html?qq-pf-to=pcqq.c2c 目前为止,RSA是应用最多的公钥加密算法,能够抵抗已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准. RSA算法中,每个通信主体都有两个钥匙,一个公钥(Public Key)用来对数据进行加密: 一个私钥(Private Key)用来对数据进行解密. 下面来看下Java中是如何使用KeyPairGenerator生成key

JAVA 非对称加密算法RSA

非对称加密算法 RSA过程 : 以甲乙双方为例 1.初始化密钥 构建密钥对,生成公钥.私钥保存到keymap中 KeyPairGenerator ---> KeyPair --> RSAPublicKey.RSAPrivateKey 2.甲方使用私钥加密, 加密后在用私钥对加密数据进行数据签名,然后发送给乙方 RSACoder.encryptByPrivateKey(data, privateKey); RSACoder.sign(encodedData, privateKey); 3.乙方则

java RSA加密算法

[转]RSA加密算法 RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准.RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥. RSA公开密钥密码体制.所谓的公开密钥密码体制就是使用不同的加密

JAVA 上加密算法的实现用例,MessageDigest介绍

第 1 章基础知识 1.1. 单钥密码体制 单钥密码体制是一种传统的加密算法,是指信息的发送方和接收方共同使用同一把密钥进行加解密. 通常 , 使用的加密算法 比较简便高效 , 密钥简短,加解密速度快,破译极其困难.但是加密的安全性依靠密钥保管的安全性 , 在公开的计算机网络上安全地传送和保管密钥是一个严峻的问题,并且如果在多用户的情况下密钥的保管安全性也是一个问题. 单钥密码体制的代表是美国的 DES 1.2. 消息摘要 一个消息摘要就是一个数据块的数字指纹.即对一个任意长度的一个数据块进行计