`
lijunaccp
  • 浏览: 159012 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

公私钥加密解密

 
阅读更多
package com.test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;

import javax.crypto.Cipher;

public class CipherRSA {

	public static void main(String[] args) throws Exception {
		new CipherRSA().publicEncrypt();
		new CipherRSA().privateDecrypt();
	}
	
	public void publicEncrypt() throws Exception{
		Cipher cipher = Cipher.getInstance("RSA");
		KeyPairGenerator keypairGenerator = KeyPairGenerator.getInstance("RSA");
		KeyPair keyPair = keypairGenerator.generateKeyPair();
		Key publicKey = keyPair.getPublic();
		Key privateKey = keyPair.getPrivate();
		saveKey(privateKey, "private_key");
		cipher.init(Cipher.ENCRYPT_MODE,publicKey);
		byte[] data = cipher.doFinal("测试数据".getBytes("UTF-8"));
		saveData(data,"public_data");
	}
	
	public void privateDecrypt() throws Exception{
		Cipher cipher = Cipher.getInstance("RSA");
		Key privateKey = readKey("private_key");
		cipher.init(Cipher.DECRYPT_MODE, privateKey);
		byte[] data = readData("public_data");
		byte[] rs = cipher.doFinal(data);
		System.out.println(new String(rs,"UTF-8"));
	}
	
	public void saveData(byte[] data, String fileName) throws Exception{
		FileOutputStream fos = new FileOutputStream(fileName);
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		oos.writeObject(data);
		oos.close();
		fos.close();
	}
	
	public void saveKey(Key key, String fileName) throws Exception{
		FileOutputStream fos = new FileOutputStream(fileName);
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		oos.writeObject(key);
		oos.close();
		fos.close();
	}
	
	public Key readKey(String fileName) throws Exception{
		FileInputStream fis = new FileInputStream(fileName);
		ObjectInputStream ois = new ObjectInputStream(fis);
		Key privateKey = (Key)ois.readObject();
		return privateKey;
	}
	
	public byte[] readData(String fileName) throws Exception{
		FileInputStream fis = new FileInputStream(fileName);
		ObjectInputStream ois = new ObjectInputStream(fis);
		byte[] data = (byte[])ois.readObject();
		return data;
	}
}

分享到:
评论

相关推荐

    PHP 公私钥加解密

    首先,我们要理解公私钥加密的基本原理。这种加密方式基于非对称加密算法,它有两个密钥:公钥和私钥。公钥可以公开给任何人,用于加密数据;而私钥必须保密,用于解密由公钥加密的数据。这种机制确保即使数据在传输...

    ssl 公私钥加密解密签名验签

    java 代码实现 获取keystore,cer文件中的私钥公钥,对数据进行加密解密验签签名

    java(sm2公私钥生成、加签、验签、加密、解密)

    java(sm2公私钥生成、加签、验签、加密、解密)demo案列

    java 使用RSA生成公私钥对、加解密、及签名验签

    在IT行业中,尤其是在网络安全和数据保护领域,非对称加密...总之,RSA在Java中的应用是网络安全和隐私保护的重要手段,通过理解并熟练运用其生成公私钥、加密解密和签名验签等操作,我们可以构建更加安全的应用系统。

    加密解密秘钥sha256带盐值

    在IT领域,尤其是在网络安全和数据保护方面,加密和解密技术是至关重要的。SHA-256(安全哈希算法256位)是一种广泛使用的散列函数,用于生成消息的固定长度摘要,通常用于验证数据完整性。在这个场景中,我们讨论的...

    Lazarus RSA 生成公私钥及加密解密代码,可直接用于工程中

    总结起来,"Lazarus RSA 生成公私钥及加密解密代码"是一个在Lazarus环境下实现的RSA加密解密工具,支持多种密钥长度,适用于实际工程需求。通过这个项目,开发者可以学习到RSA算法的实现细节,以及如何在Lazarus中...

    利用公私钥加解密

    这里我们关注的是“利用公私钥加解密”,这是非对称加密算法的核心概念。非对称加密与对称加密不同,它使用一对密钥,即公钥和私钥,来进行加密和解密操作。这种技术在网络安全、数据传输和数字签名等领域有着广泛的...

    Hash MD5 DES AES RSA加解密实例

    本文将详细讲解四种常见的加密算法:MD5、DES、AES和RSA,以及它们在实际应用中的加解密实例。 首先,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以将任意长度的数据转化为固定长度的摘要。...

    bcprov-jdk16-146-RSA.jar RAS加解密公私钥

    公私钥加解密是RSA的核心特性,它使用一对密钥,即公钥和私钥,来进行加密和解密操作。这种机制确保了只有拥有对应私钥的人才能解密由公钥加密的信息,从而提供了安全保障。 标题中的"bcprov-jdk16-146-RSA.jar"是...

    AES算法的javademo(秘钥采用RSA公私钥加解密)

    在这个Demo中,生成的一对公私钥用于加密和解密AES的密钥。 6. 生成公私钥对:使用`KeyPairGenerator`生成RSA的公钥和私钥。 7. 公钥加密AES密钥:使用公钥对AES密钥进行加密,得到的加密密钥可以安全地在网络上传输...

    使用RSA生成公私钥对、加解密、及签名验签 JAVA源码.rar

    RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的...通过这个RAR文件中的源码,你可以学习如何在JAVA程序中实现RSA的公私钥生成、数据加密解密以及数字签名验证,这对于提升你的JAVA安全编程技能非常有帮助。

    RSA公私钥生成及加解密文件工具

    这是一个RSA加密解密软件,可以指定大素数P和Q的位数,生成RSA公钥和私钥。还可以用用来对字符型文本进行加解密。

    RSA加密、解密、公私钥生成

    RSA公钥加密,公钥解密,私钥加密,私钥解密,公私钥生成

    IOS RSA公私钥生成IOS RSA公私钥生成

    本文将深入探讨如何在iOS中生成RSA公私钥对,并讲解相关概念和实现步骤。 RSA(Rivest–Shamir–Adleman)是一种非对称加密算法,它基于大数因子分解的数学难题。公钥可以公开,任何人都可以使用它来加密数据,而...

    RSA加密解密的使用,含jsencrypt.js文件(uni-app也可用)

    RSA加密解密是一种广泛应用于网络安全中的非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家在1977年提出,因此得名RSA。这种算法基于大数因子分解的困难性,为数据提供了一种安全的传输方式。 ...

    RSA公私钥生成工具 RSA秘钥生成工具

    总结一下,RSA公私钥生成工具是用于创建RSA加密密钥对的软件,这些密钥对可以用于数据加密、解密、数字签名和验证。OpenSSL是一个常用的工具,可以方便地生成和管理这些密钥。在处理敏感信息时,正确使用RSA公私钥是...

    国密算法SM2公私钥加解密及签名验签以及前端js sm-crypto

    2. 生成公私钥对,私钥用于签名,公钥用于验证。 3. 对数据进行加密,使用公钥加密原始信息。 4. 对加密后的数据进行解密,使用私钥进行解密。 5. 创建签名,使用私钥对消息进行签名。 6. 验证签名,使用公钥和签名...

    C++实现公私钥生成及文件加减示例

    在这个C++实现的示例中,我们将探讨如何生成公私钥对以及如何使用这些密钥对文件进行加密和解密操作。 首先,我们需要理解RSA算法的基本原理。RSA基于数论中的两个难题:大整数因子分解和欧拉函数的性质。简而言之...

    微信小程序 RSA加解密

    综上所述,微信小程序RSA加解密是保障用户数据安全的重要手段,涉及密钥生成、公钥上传、客户端加密、服务器解密等多个环节,需要开发者对加密算法、网络通信以及微信小程序的API有深入的理解和实践经验。

Global site tag (gtag.js) - Google Analytics