`
wangfeiaini
  • 浏览: 54975 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java实现DESede和RSA加解密

阅读更多

 

1.DESede加解密:

 

import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;

/**
 * 对称加密与解密
 * @author Administrator
 *
 */
public class EncryptData {
	//要加密的明文
	static String str = "123456adasdadqsadqweds7890";
	public static void main(String[] args) {
		System.out.println("明文:"+str);
		try {
			//指定编码特征为utf-8
			byte[] plain1 = str.getBytes("UTF-8");
			//创建密钥生成器 加密算法为DESede
			KeyGenerator generator = KeyGenerator.getInstance("DESede");
			generator.init(168);
			//获得密钥
			SecretKey secretKey = generator.generateKey();
			//获取密钥的二进制编码格式
			byte[] kb = secretKey.getEncoded();
			System.out.println("密钥:");
			//打印密钥 每行8个
			for (int j = 0; j < kb.length; j++) {
				System.out.print(kb[j]+",");
				if(j%8==7) System.out.println();
			}
			//创建加密对象,加密算法DESede
			Cipher cipher = Cipher.getInstance("DESede");
			//加密对象初始化
			cipher.init(Cipher.ENCRYPT_MODE, secretKey);
			//密文存放在字节数组中
			byte[] encrypt = cipher.doFinal(plain1);
			System.out.println("密文:");
			//打印密文
			for (int j = 0; j < encrypt.length; j++) {
				System.out.print(encrypt[j]+",");
				if(j%8==7) System.out.println();
			}
			//切换解密模式
			cipher.init(Cipher.DECRYPT_MODE, secretKey);
			//解密数组
			byte[] cs = cipher.doFinal(encrypt);
			String data = new String(cs);
			System.out.println("解密:"+data);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (NoSuchPaddingException e) {
			e.printStackTrace();
		} catch (InvalidKeyException e) {
			e.printStackTrace();
		} catch (IllegalBlockSizeException e) {
			e.printStackTrace();
		} catch (BadPaddingException e) {
			e.printStackTrace();
		}
	}
}

 2。RSA加解密

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.math.BigInteger;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;

public class RSAEncrypt {
	public static void main(String[] args) {
		try {
			//创建密钥生成器,加密算法为RSA
			KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
			//初始化密钥对象,RAS密钥长度为510-2048
			generator.initialize(1024);
			//生成密钥对
			KeyPair keyPair = generator.genKeyPair();
			//获取公钥
			PublicKey pbk = keyPair.getPublic();
			//获取私钥
			PrivateKey prk = keyPair.getPrivate();
			//建立文件输出流 保存公钥
			FileOutputStream fileOutputStream = new FileOutputStream("d:\\key.dat");
			//文件对象输出流
			ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
			//向文件key.dat中输出对象
			objectOutputStream.writeObject(pbk);
			//建立文件输出流 保存私钥
			FileOutputStream fout = new FileOutputStream("d:\\key.dat");
			//文件对象输出流
			ObjectOutputStream objectOutputStream2 = new ObjectOutputStream(fout);
			objectOutputStream2.writeObject(prk);
			//获得公钥,计算指数和模数
			RSAPublicKey pkey = (RSAPublicKey) keyPair.getPublic();
			BigInteger in = pkey.getPublicExponent();
			BigInteger en = pkey.getModulus();
			//明文
			String pltext = "I hava e friend";
			byte[] pb = pltext.getBytes("UTF-8");
			BigInteger bigInteger = new BigInteger(pb);
			//执行加密
			BigInteger bp = bigInteger.modPow(in, en);
			//输出密文
			System.out.println("bi:"+bp);
			//获取私钥以及解密
			RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
			BigInteger nv = privateKey.getPrivateExponent();
			BigInteger mv = privateKey.getModulus();
			//执行解密
			BigInteger bi = bp.modPow(nv, mv);
			//打印明文
			byte[] mt = bi.toByteArray();
			for (int i = 0; i < mt.length; i++) {
				System.out.print((char)mt[i]);
			}
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
}

 

  • 大小: 46 KB
分享到:
评论

相关推荐

    MD5算法,URLEncoding,Base64编码,AES,DES,DESede,RSA加密解密工具类和使用实例

    例如,使用`java.security.MessageDigest`实现MD5计算,`java.net.URLEncoder`进行URL编码,`java.util.Base64`处理Base64编码,以及使用`javax.crypto.Cipher`进行AES、DES、DESede和RSA的加解密操作。 总的来说,...

    Java_DES和RSA加解密

    总结来说,DES和RSA在Java中实现加解密的过程主要包括: - 生成密钥:DES使用`KeyGenerator`,RSA使用`KeyPairGenerator`。 - 初始化密码器:`Cipher.getInstance()`,并指定加密算法。 - 加密:`cp.init(Cipher....

    JAVA实现的DES+RSA

    本文将深入探讨如何在Java环境中实现DES(Data Encryption Standard)和RSA(Rivest-Shamir-Adleman)这两种加密算法的结合,以提供更为安全的数据保护。 DES是一种对称加密算法,它使用相同的密钥进行加密和解密。...

    很强的Java加密解密算法源码.zip

    在这个"很强的Java加密解密算法源码.zip"中,我们可以深入学习如何在Java中实现3DES算法来加密和解密文件。 3DES算法是一种块加密算法,它通过三次应用DES密钥来增强安全性。基本流程如下: 1. **加密过程**:输入...

    Java加密组件实现DES、RSA和SHA加密算法

    这些加密组件可以方便地集成到Java应用中,用于数据加密、解密和验证。 总的来说,Java提供了一系列的API来支持各种加密算法,开发者可以根据需求选择合适的算法和模式来保护应用程序中的敏感数据。同时,了解这些...

    Java中对字符串进行加密和解密

    虽然密码学涉及到复杂的数学理论和技术,但幸运的是现代开发语言如Java提供了丰富的API,使得开发人员能够轻松实现数据的加密与解密功能。 #### 2. 密码学简介 密码学是一门研究信息安全的学科,它主要关注如何保护...

    JAVA 加密 解密 算法

    下面通过代码示例来展示如何在Java中实现Blowfish算法的加密和解密功能: ```java import java.security.Security; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey...

    JAVA-加密解密(详细讲解-有案例-有理论)

    在Java中,可以使用`javax.crypto.Cipher`类来实现DESede加密和解密: ```java Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); SecretKey key = ...; // 创建密钥 cipher.init(Cipher.ENCRYPT_...

    JS端与java(android)端3DES加密解密和Base64编码解码文件

    本文将深入探讨如何在JavaScript(JS)客户端和Java(Android)端实现3DES加密解密以及Base64编码解码,这对于保护用户敏感信息和实现安全通信至关重要。 首先,3DES(Triple Data Encryption Standard)是一种加强...

    java对几种加密算法的实现

    以上就是Java中常见的加密算法实现,开发者可以根据具体需求选择合适的算法,并使用Java提供的API来实现加密、解密、签名和验签等操作。在实际应用中,为了提高安全性,通常会结合使用对称和非对称加密,并利用哈希...

    java AES,DES,3DES,RAS,DSA 加密算法实现

    Java加密技术是保护数据安全的重要工具,涉及到的主要算法有AES、DES、3DES、RSA和DSA。这些算法在信息安全领域有着广泛的应用,如数据传输、密码存储、数字签名等。以下将详细介绍这些加密算法的原理及Java中的实现...

    java源码包---java 源码 大量 实例

    Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印  util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印...

    RSA和DES结合起来的算法

    在 Java 中,可以使用 Java Cryptography Architecture(JCA)来实现这种算法。首先,需要生成 DES 密钥和 RSA 密钥对。可以使用 KeyGenerator 类来生成 DES 密钥,而 KeyPairGenerator 类可以用来生成 RSA 密钥对。...

    bcprov-jdk14-133.rar_SHA in java_bcpprov-jdk14_des_java des

    在Java中,`java.security.KeyPairGenerator`和`java.security.KeyPair`接口用于生成RSA密钥对,而`Cipher`类则用于进行加解密操作。 在压缩包的文件列表中,`www.pudn.com.txt`可能是包含相关文档或者示例代码的...

    基于JAVA的CBC保密模式应用.pdf

    在Java中实现CBC模式的关键在于正确地处理初始向量和密文块之间的链接。 **使用CBC模式进行加密解密** - **加密过程**:对于每个明文块`Pi`,首先与前一个密文块`Ci-1`进行异或操作,然后使用密钥`K`进行加密得到...

    JAVA上加密算法的实现用例.doc

    例如,使用MessageDigest类可以实现MD5和SHA1的摘要计算,DSA和RSA可以通过KeyPairGenerator和Signature类来实现签名和验证,DESede和DES的加密解密则通过Cipher类进行。安装JCE后,将相关jar文件加入到类路径中即可...

    des,3des,aes,md5,rsa

    在Java中,可以使用javax.crypto.Cipher类来实现DES加密和解密。例如: ```java Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "DES"); ...

    java源码包2

    Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印  util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,...

    java源码包3

    Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印  util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,...

Global site tag (gtag.js) - Google Analytics