`

JAVA常用加密技术

阅读更多
                       JAVA常用加密技术加密
   最近看到公司一个以前项目的MD5加密方式,让我对JAVA加密感觉到一些兴趣,但是公司的MD5加密是自己写的一个MD5工具类算法类进行加密。但窝了解到一些其他的加密方式。
   一、DES加密
   DDES(Data Encryption Standar 数据加密标准算法)是一种常见的对称密钥加密算法,加密者使用密钥对原文加密,解密者必须使用相同的密钥才能对密文进行解密。
   重点在KeyGenerator、Cipher、和Key类的使用
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.security.Key;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;

public class Test2 {

	/**
	 * 生成密钥
	 */
	private void secretKey(){
		
		String fileName = "d:/encry/密钥.dat"; 
		
		try {
			KeyGenerator keyGen = KeyGenerator.getInstance("DES");
			
			keyGen.init(56);
			
			Key key = keyGen.generateKey();
			
			ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(fileName));
			
			out.writeObject(key);
			
			out.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
	/**
	 * 加密
	 */
	private void encrypt(){
		
		String fileName = "d:/encry/密钥.dat"; 
		
		try {
			
			//读取密钥
			ObjectInputStream in = new ObjectInputStream(new FileInputStream(fileName));
			Key key = (Key) in.readObject();
			
			Cipher cipher = Cipher.getInstance("DES");
			cipher.init(Cipher.ENCRYPT_MODE, key);
			//加密
			byte[] cipherText = cipher.doFinal("aaaaasda".getBytes("UTF-8"));
			
			
			//保存加密文件
			FileOutputStream fileOutputStream = new FileOutputStream("d:/encry/encrypt.txt",false);
			fileOutputStream.write(cipherText);
			
			fileOutputStream.close();
		}catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	/**
	 * 解密
	 */
	private void decrypt(){
		
		try {
			
			//读取加密文件
			FileInputStream fi = new FileInputStream("d:/encryS/encrypt.txt");
			
			byte[] cipherText = new byte[fi.available()];
			fi.read(cipherText);
			fi.close();
			
			
			//读取密钥
			ObjectInputStream in = new ObjectInputStream(new FileInputStream("d:/encry/密钥.dat"));
			Key key = (Key) in.readObject();
			
			Cipher cipher = Cipher.getInstance("DES");
			cipher.init(Cipher.DECRYPT_MODE, key);
			
			
			byte[] text = cipher.doFinal(cipherText);
			
			System.out.println(new String(cipherText,"UTF-8"));
			                                    
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
}

     二、RSA加密(不对称密钥加密,加密和解密的密钥是不一样的,常见的方法是用户生成一对密钥,将公钥发送给别人,别人使用公钥加密,此时密文只能被用户的另一个私钥解密,有效解决了密钥传递可能产生的密钥泄露问题)
    注意:KeyPairGenerator、Cipher、KeyPair类的使用
   
    import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;

import javax.crypto.Cipher;


public class Rsa {

	
	/**
	 * 生成密文
	 */
	private void secretKey(){
		
		KeyPairGenerator keyPairGenerator;
		try {
			keyPairGenerator = KeyPairGenerator.getInstance("RSA");
			//采用1024位
			keyPairGenerator.initialize(1024);
			
			
			KeyPair key = keyPairGenerator.generateKeyPair();
			PublicKey publicKey = key.getPublic();
			PrivateKey privateKey = key.getPrivate();

			ObjectOutputStream ot = new ObjectOutputStream(new FileOutputStream("d:test/私钥.dat"));
			ot.writeObject(privateKey);
			ot.close();
			
			
			ot = new ObjectOutputStream(new FileOutputStream("d:test/公钥.dat"));
			ot.writeObject(privateKey);
			ot.close();
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	
	/**
	 * 加密
	 */
	private void crypt(){
		
		
		try {
			ObjectInputStream os = new ObjectInputStream(new FileInputStream("d:/test/公钥.dat"));
			PublicKey publicKey = (PublicKey) os.readObject();
			
			Cipher cipher = Cipher.getInstance("RSA");
			cipher.init(Cipher.ENCRYPT_MODE, publicKey);
			
			byte[] cipherTxt = cipher.doFinal("test".getBytes("UTF-8"));
			
			FileOutputStream fileOutputStream = new FileOutputStream("d:/test/密文.txt",false);
			fileOutputStream.write(cipherTxt);
			fileOutputStream.close();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 解密
	 */
	private void deCrypt(){
		try {
			
			
			FileInputStream fileInputStream = new FileInputStream("d:/test/密文.txt");
			byte[]cipherText = new byte[fileInputStream.available()];
			fileInputStream.read(cipherText);
			fileInputStream.close();
			
			
			ObjectInputStream fi = new ObjectInputStream(new FileInputStream("d:test/私钥.dat"));
			PrivateKey privateKey = (PrivateKey) fi.readObject();
			
			Cipher cipher = Cipher.getInstance("RSA");
			cipher.init(Cipher.DECRYPT_MODE, privateKey);
			
			byte[] plainText = cipher.doFinal(cipherText);
			System.out.println(new String(plainText,"UTF-8"));
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

   

     三、信息验证(MD5),MD5算法是一种常见的消息摘要算法,它能够将原始信息文本生成一个消息摘要值,这个消息摘要值也称为哈希值,只要文本不同,就会得到一个不同的消息摘要,而且几乎不能从消息摘要反向推出原始信息文本。
     主要注意:MessageDigest类的使用
    四、文件签名(主要是密钥不对称加密算法的另一种应用,主要用于验证文件类容是否被篡改,原理是对原始文件使用私钥加密得到签名文件,验证者使用公钥对签名文件解密,对比原文件)
    主要注意:generateKeys、sign和validateSign方法及signature方法
 
分享到:
评论

相关推荐

    java加密技术详解

    本文将深入探讨Java中的加密技术,特别是MD5加密算法,通过实例和代码片段,帮助读者理解其工作原理及如何在实际项目中应用。 #### 一、MessageDigest与MD5算法 `MessageDigest`类是Java提供的用于实现摘要算法的...

    常用加密工具类(JAVA).zip

    本资源包“常用加密工具类(JAVA).zip”提供了12个不同的加密和排序工具类,以及一个log4j配置文件,旨在帮助开发者更方便地处理这些常见任务。以下是这些工具类及配置文件的详细介绍: 1. **MD5加密**:MD5...

    Java常用的加密算法

    根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。 对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的...

    Java文本文件加密与解密

    随着现代网络技术的飞速发展,人们的个人信息、文件传递以及电子商务等方面都需要大力的保护,文件加密技术也应运而生。本次使用JAVA语言,采用3DES加密算法进行对文本文件的加密,通过二进制和十六进制的转换来实现...

    java常用加密方式.pdf

    本文将深入探讨Java中常用的加密方式,主要关注对称加密和非对称加密。 首先,加密的主要目的是保护数据,防止未经授权的访问。加密可以分为双向加密和单向加密。双向加密允许信息在加密后能够被解密回原始内容,...

    JAVA数据加密方面的资料

    在这个主题中,我们将深入探讨三个关键知识点:Java中的类加载器(ClassLoader)在加密解密中的应用、常见的加密算法以及Java提供的加密技术。 首先,让我们来看看Java的类加载器如何在加密解密中发挥作用。类加载...

    Java项目加密技术

    Java项目中的加密技术是保障信息安全的关键手段,涵盖了多种加密解密算法和证书体系。下面将详细介绍这些技术: 1. **基本的单向加密算法**: - **BASE64**:其实是一种编码方式,而非真正的加密算法。它将任意...

    java 文字加密实例

    然而,我们可以基于这个主题,深入探讨Java中的文本加密技术,包括其背景、原理以及常见加密算法的实现。 ### Java中的文字加密 在计算机科学中,加密是保护数据安全的关键技术之一,它通过将可读信息转换为看似...

    加密典型代码(java)

    在IT行业中,加密技术是保护数据安全的重要手段。Java作为一种广泛应用的编程语言,提供了丰富的库和API用于实现各种加密算法。本资料包“加密典型代码(java)”旨在帮助开发者学习如何在Java环境中编写加密程序,...

    Java中常用的加密方法(JDK)

    这里我们主要讨论对称加密,因为它是Java中最常用且基础的加密方式。 对称加密是一种使用同一密钥进行加密和解密的加密技术。它的优点在于加解密速度快,适合处理大量数据。Java中实现对称加密的关键类包括`...

    java 字符串加密解密

    在IT行业中,字符串加密解密是信息安全领域的重要组成部分,它涉及到数据保护、用户隐私和...但需要注意的是,随着技术的发展,加密技术也在不断更新,开发者应当关注最新的安全标准和最佳实践,以保护用户数据的安全。

    JAVA文件加密打包实例

    在Java中,最常用的方式是使用ZIP格式打包文件。我们可以使用`java.util.zip`包中的`ZipOutputStream`和`ZipEntry`来实现。以下是一个简单的示例: 1. 创建`ZipOutputStream`对象,指定输出的ZIP文件路径。 2. 遍历...

    Java中常用的加密算法RSA

    这个压缩包文件"Java中常用的加密算法RSA.doc"可能包含更详细的内容,如具体的代码示例、原理解释或应用场景分析。对于学习和理解Java中的RSA加密算法,阅读这份文档会是一个很好的资源。无论你是初学者还是有经验的...

    用Java实现的图片加密程序

    4. **流操作与加密**:在Java中,可以使用BufferedInputStream和BufferedOutputStream来提高读写效率,并结合Cipher类(Java的加密/解密接口)进行数据加密和解密。通过CipherInputStream和CipherOutputStream,可以...

    Java常用的对密码加密的方法(MD5,SHA)

    本篇文章将详细介绍Java中两种常见的密码加密算法:MD5(Message-Digest Algorithm 5)和SHA(Secure Hash Algorithm)。我们将通过`CodeUtil.java`这个代码文件来探讨如何在实际开发中实现这两种加密方式。 首先,...

    Java实现文件的RSA和DES加密

    在现代密码技术中,根据密钥类型的不同,可以将其分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的算法包括 DES、3DES、AES 等。非对称...

    对java jar包实现混淆加密

    总结,Java jar包的混淆加密是提升代码安全的重要手段,通过ProGuard等混淆工具和加密技术,可以有效降低源代码被逆向工程分析的风险。然而,安全是一个持续的过程,开发者应始终保持警惕,及时更新和优化保护策略。

    java实现的加密技术的算法

    Java加密技术是软件开发中一个重要的安全领域,用于保护数据的隐私和安全性。本文将深入探讨Java中实现的各种加密算法,以及如何在实际项目中应用它们。 首先,我们需要理解加密的基本概念。加密是一种将可读数据...

    JCT - java加密解密工具包.zip_Java加密_java 加密_jct java_加密 解密_加密工具

    下面我们将详细探讨Java加密的相关知识点以及可能在JCT中涉及的技术。 1. **对称加密**:这是最常见的加密方式,使用同一密钥进行加密和解密。常见的对称加密算法有DES(Data Encryption Standard)、3DES(Triple ...

Global site tag (gtag.js) - Google Analytics