`
yu120
  • 浏览: 81803 次
社区版块
存档分类
最新评论

各种Java加密算法

    博客分类:
  • Java
阅读更多

如基本的单向加密算法:  

  • BASE64 严格地说,属于编码格式,而非加密算法

  • MD5(Message Digest algorithm 5,信息摘要算法)

  • SHA(Secure Hash Algorithm,安全散列算法)

  • HMAC(Hash Message Authentication Code,散列消息鉴别码)


    复杂的对称加密(DES、PBE)、非对称加密算法: 

  • DES(Data Encryption Standard,数据加密算法)

  • PBE(Password-based encryption,基于密码验证)

  • RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)

  • DH(Diffie-Hellman算法,密钥一致协议)

  • DSA(Digital Signature Algorithm,数字签名)

  • ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)



    本篇内容简要介绍BASE64MD5SHAHMAC几种方法。 
    MD5SHAHMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法。我们通常只把他们作为加密的基础。单纯的以上三种的加密并不可靠。 

BASE64 
按 照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.) 
常见于邮件、http加密,截取http信息,你就会发现登录操作的用户名、密码字段通过BASE64加密的。 

各种Java加密算法 

通过java代码实现如下:

/**
	 * BASE64解密
	 * 
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static byte[] decryptBASE64(String key) throws Exception {
		return (new BASE64Decoder()).decodeBuffer(key);
	}

	/**
	 * BASE64加密
	 * 
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static String encryptBASE64(byte[] key) throws Exception {
		return (new BASE64Encoder()).encodeBuffer(key);
	}

 主要就是BASE64Encoder、BASE64Decoder两个类,我们只需要知道使用对应的方法即可。另,BASE加密后产生的字节位数是8的倍数,如果不够位数以=符号填充。 


MD5 
MD5 -- message-digest algorithm 5 (信息-摘要算法)缩写,广泛用于加密和解密技术,常用于文件校验。校验?不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都 是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。就是用来验证文 件是否一致的。 

各种Java加密算法 

通过java代码实现如下:

/**
	 * MD5加密
	 * 
	 * @param data
	 * @return
	 * @throws Exception
	 */
	public static byte[] encryptMD5(byte[] data) throws Exception {

		MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
		md5.update(data);

		return md5.digest();

	}

 


通常我们不直接使用上述MD5加密。通常将MD5产生的字节数组交给BASE64再加密一把,得到相应的字符串。 

SHA 
SHA(Secure Hash Algorithm,安全散列算法),数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域。虽然,SHA与MD5通过碰撞法都被破解了, 但是SHA仍然是公认的安全加密算法,较之MD5更为安全。 

各种Java加密算法 

通过java代码实现如下:

/**
	 * SHA加密
	 * 
	 * @param data
	 * @return
	 * @throws Exception
	 */
	public static byte[] encryptSHA(byte[] data) throws Exception {

		MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
		sha.update(data);

		return sha.digest();

	}
}

 

/**
	 * 初始化HMAC密钥
	 * 
	 * @return
	 * @throws Exception
	 */
	public static String initMacKey() throws Exception {
		KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);

		SecretKey secretKey = keyGenerator.generateKey();
		return encryptBASE64(secretKey.getEncoded());
	}

	/**
	 * HMAC加密
	 * 
	 * @param data
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static byte[] encryptHMAC(byte[] data, String key) throws Exception {

		SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);
		Mac mac = Mac.getInstance(secretKey.getAlgorithm());
		mac.init(secretKey);

		return mac.doFinal(data);

	}

 完整实例:

import java.security.MessageDigest;

import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * 基础加密组件
 * 
 * @author 梁栋
 * @version 1.0
 * @since 1.0
 */
public abstract class Coder {
	public static final String KEY_SHA = "SHA";
	public static final String KEY_MD5 = "MD5";

	/**
	 * MAC算法可选以下多种算法
	 * 
	&nbsp;*&nbsp;<pre>
	&nbsp;*&nbsp;HmacMD5&nbsp;
	&nbsp;*&nbsp;HmacSHA1&nbsp;
	&nbsp;*&nbsp;HmacSHA256&nbsp;
	&nbsp;*&nbsp;HmacSHA384&nbsp;
	&nbsp;*&nbsp;HmacSHA512
	&nbsp;*&nbsp;</pre>
	&nbsp;*/
	public&nbsp;static&nbsp;final&nbsp;String&nbsp;KEY_MAC&nbsp;=&nbsp;"HmacMD5";

	/**
	&nbsp;*&nbsp;BASE64解密
	&nbsp;*&nbsp;
	&nbsp;*&nbsp;@param&nbsp;key
	&nbsp;*&nbsp;@return
	&nbsp;*&nbsp;@throws&nbsp;Exception
	&nbsp;*/
	public&nbsp;static&nbsp;byte[]&nbsp;decryptBASE64(String&nbsp;key)&nbsp;throws&nbsp;Exception&nbsp;{
		return&nbsp;(new&nbsp;BASE64Decoder()).decodeBuffer(key);
	}

	/**
	&nbsp;*&nbsp;BASE64加密
	&nbsp;*&nbsp;
	&nbsp;*&nbsp;@param&nbsp;key
	&nbsp;*&nbsp;@return
	&nbsp;*&nbsp;@throws&nbsp;Exception
	&nbsp;*/
	public&nbsp;static&nbsp;String&nbsp;encryptBASE64(byte[]&nbsp;key)&nbsp;throws&nbsp;Exception&nbsp;{
		return&nbsp;(new&nbsp;BASE64Encoder()).encodeBuffer(key);
	}

	/**
	&nbsp;*&nbsp;MD5加密
	&nbsp;*&nbsp;
	&nbsp;*&nbsp;@param&nbsp;data
	&nbsp;*&nbsp;@return
	&nbsp;*&nbsp;@throws&nbsp;Exception
	&nbsp;*/
	public&nbsp;static&nbsp;byte[]&nbsp;encryptMD5(byte[]&nbsp;data)&nbsp;throws&nbsp;Exception&nbsp;{

		MessageDigest&nbsp;md5&nbsp;=&nbsp;MessageDigest.getInstance(KEY_MD5);
		md5.update(data);

		return&nbsp;md5.digest();

	}

	/**
	&nbsp;*&nbsp;SHA加密
	&nbsp;*&nbsp;
	&nbsp;*&nbsp;@param&nbsp;data
	&nbsp;*&nbsp;@return
	&nbsp;*&nbsp;@throws&nbsp;Exception
	&nbsp;*/
	public&nbsp;static&nbsp;byte[]&nbsp;encryptSHA(byte[]&nbsp;data)&nbsp;throws&nbsp;Exception&nbsp;{

		MessageDigest&nbsp;sha&nbsp;=&nbsp;MessageDigest.getInstance(KEY_SHA);
		sha.update(data);

		return&nbsp;sha.digest();

	}

	/**
	&nbsp;*&nbsp;初始化HMAC密钥
	&nbsp;*&nbsp;
	&nbsp;*&nbsp;@return
	&nbsp;*&nbsp;@throws&nbsp;Exception
	&nbsp;*/
	public&nbsp;static&nbsp;String&nbsp;initMacKey()&nbsp;throws&nbsp;Exception&nbsp;{
		KeyGenerator&nbsp;keyGenerator&nbsp;=&nbsp;KeyGenerator.getInstance(KEY_MAC);

		SecretKey&nbsp;secretKey&nbsp;=&nbsp;keyGenerator.generateKey();
		return&nbsp;encryptBASE64(secretKey.getEncoded());
	}

	/**
	&nbsp;*&nbsp;HMAC加密
	&nbsp;*&nbsp;
	&nbsp;*&nbsp;@param&nbsp;data
	&nbsp;*&nbsp;@param&nbsp;key
	&nbsp;*&nbsp;@return
	&nbsp;*&nbsp;@throws&nbsp;Exception
	&nbsp;*/
	public&nbsp;static&nbsp;byte[]&nbsp;encryptHMAC(byte[]&nbsp;data,&nbsp;String&nbsp;key)&nbsp;throws&nbsp;Exception&nbsp;{

		SecretKey&nbsp;secretKey&nbsp;=&nbsp;new&nbsp;SecretKeySpec(decryptBASE64(key),&nbsp;KEY_MAC);
		Mac&nbsp;mac&nbsp;=&nbsp;Mac.getInstance(secretKey.getAlgorithm());
		mac.init(secretKey);

		return&nbsp;mac.doFinal(data);

	}
}

 

分享到:
评论

相关推荐

    各种java加密算法工具类

    这里我们主要关注的是"各种java加密算法工具类",其中包括了RSA和MD5等常见的加密方法。下面我们将深入探讨这些算法及其在Java中的实现。 首先,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它将...

    JAVA 加密算法(很好的算法,经典摘要)

    Java加密算法是信息安全领域中的重要组成部分,用于保护数据的隐私性和完整性。在Java平台上,有多种内置的加密库,如Java Cryptography Extension (JCE) 和 Java Cryptography Architecture (JCA),它们为开发者...

    Java加密算法(源代码)

    Java加密算法是信息安全领域的重要组成部分,它涉及到数据的保护、隐私的维护以及网络通信的安全。在Java中,我们可以使用多种加密技术来实现数据的加密和解密,包括对称加密、非对称加密以及数字签名等。下面将详细...

    java 加密算法及原理.jar

    Java加密算法及原理是信息安全领域中的重要组成部分,用于保护数据的隐私性和完整性。在Java中,我们可以使用多种加密算法来实现数据的安全传输和存储。以下将详细介绍几种常见的Java加密算法及其工作原理。 1. **...

    Java加密算法学习笔记的源码包

    Java加密算法是信息安全领域的重要组成部分,它在保护数据隐私、验证数据完整性和确认发送者身份等方面发挥着关键作用。这个名为"Java加密算法学习笔记的源码包"的压缩文件包含了关于Java中几种主要加密算法的实践...

    java加密算法实现

    在Java编程语言中,加密算法是信息安全领域的重要组成部分,用于保护数据的隐私和安全。本文将详细介绍Java中常见的加密算法的实现,以及如何在JDK 1.8环境下进行操作。 1. **对称加密算法** 对称加密是最基础的...

    java加密算法分析

    加密加密算法调研以及 加密算法 代码实现,其中包括rsa、des、hash等算法

    java加密算法源码

    Java加密算法源码是Java开发者在处理数据安全时经常需要用到的资源。这些源码涵盖了多种加密算法,包括对称加密、非对称加密、哈希加密以及消息认证码等,它们在网络安全、数据保密和身份验证等领域发挥着关键作用。...

    java加密算法及常用知识学习杂记

    总结来说,Java加密算法的学习涵盖了理论与实践,包括理解各种加密机制、掌握Java加密库的使用、处理异构数据同步的挑战。通过深入研究和实践,开发者可以构建更安全、高效的应用程序,保障用户数据的安全。

    基于Java实现的同态加密算法的实现

    在"research_encrypt-code"这个压缩包中,很可能包含了Java实现同态加密算法的源代码,包括密钥管理、加密、解密和操作加密数据的函数。通过研究这些代码,我们可以深入了解如何在实际应用中利用Java来构建安全的...

    JAVA加密算法

    ### JAVA加密算法详解 #### 一、概述 在信息技术领域,加密技术是保障信息安全的关键手段之一。本篇文章将深入探讨JAVA平台上的加密算法实现,并重点介绍单钥密码体制及其应用场景。 #### 二、单钥密码体制...

    java c++互通的加密算法

    本主题探讨的是如何在 Java 和 C++ 中实现相同的加密算法,以便在这两个环境中可以无缝地交换加密数据。这里我们将专注于一种常见的加密标准——AES(高级加密标准),它在3个文件中被实现。 AES,全称为Advanced ...

    java加密算法:Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法

    java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...

    java常用几种加密算法

    本文将详细介绍几种常用的Java加密算法及其应用实例,包括MD5、SHA及RSA。 #### 1. MD5加密 **简介**:MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,能够将任意长度的数据转换成一个固定长度...

    java 凯撒加密算法

    Java 凯撒加密算法 Java 凯撒加密算法是一种基于凯撒密码的加密算法,它在 Java 环境下实现了凯撒密码的加密过程。下面是该算法的详细介绍: 凯撒密码流程图 凯撒密码流程图是指凯撒密码的加密过程的图形表示。该...

    java 加密算法的代码实现

    Java加密算法是信息安全领域的重要组成部分,它用于保护数据的隐私和完整性。在Java中,有多种加密技术可供选择,如消息摘要、对称加密、非对称加密以及数字签名。以下将详细介绍这些加密方法。 首先,消息摘要算法...

    JAVA上加密算法的实现用例.rar_java 加密_加密_加密算法 java

    四、Java加密算法实现步骤 1. 导入相关类库:如`javax.crypto.Cipher`、`java.security.KeyPairGenerator`等。 2. 选择加密算法:如AES、RSA等。 3. 初始化Cipher对象:根据加密模式(ECB、CBC等)和填充模式...

Global site tag (gtag.js) - Google Analytics