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;
}
}
分享到:
相关推荐
首先,我们要理解公私钥加密的基本原理。这种加密方式基于非对称加密算法,它有两个密钥:公钥和私钥。公钥可以公开给任何人,用于加密数据;而私钥必须保密,用于解密由公钥加密的数据。这种机制确保即使数据在传输...
java 代码实现 获取keystore,cer文件中的私钥公钥,对数据进行加密解密验签签名
java(sm2公私钥生成、加签、验签、加密、解密)demo案列
在IT行业中,尤其是在网络安全和数据保护领域,非对称加密...总之,RSA在Java中的应用是网络安全和隐私保护的重要手段,通过理解并熟练运用其生成公私钥、加密解密和签名验签等操作,我们可以构建更加安全的应用系统。
在IT领域,尤其是在网络安全和数据保护方面,加密和解密技术是至关重要的。SHA-256(安全哈希算法256位)是一种广泛使用的散列函数,用于生成消息的固定长度摘要,通常用于验证数据完整性。在这个场景中,我们讨论的...
总结起来,"Lazarus RSA 生成公私钥及加密解密代码"是一个在Lazarus环境下实现的RSA加密解密工具,支持多种密钥长度,适用于实际工程需求。通过这个项目,开发者可以学习到RSA算法的实现细节,以及如何在Lazarus中...
这里我们关注的是“利用公私钥加解密”,这是非对称加密算法的核心概念。非对称加密与对称加密不同,它使用一对密钥,即公钥和私钥,来进行加密和解密操作。这种技术在网络安全、数据传输和数字签名等领域有着广泛的...
本文将详细讲解四种常见的加密算法:MD5、DES、AES和RSA,以及它们在实际应用中的加解密实例。 首先,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以将任意长度的数据转化为固定长度的摘要。...
公私钥加解密是RSA的核心特性,它使用一对密钥,即公钥和私钥,来进行加密和解密操作。这种机制确保了只有拥有对应私钥的人才能解密由公钥加密的信息,从而提供了安全保障。 标题中的"bcprov-jdk16-146-RSA.jar"是...
在这个Demo中,生成的一对公私钥用于加密和解密AES的密钥。 6. 生成公私钥对:使用`KeyPairGenerator`生成RSA的公钥和私钥。 7. 公钥加密AES密钥:使用公钥对AES密钥进行加密,得到的加密密钥可以安全地在网络上传输...
RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的...通过这个RAR文件中的源码,你可以学习如何在JAVA程序中实现RSA的公私钥生成、数据加密解密以及数字签名验证,这对于提升你的JAVA安全编程技能非常有帮助。
这是一个RSA加密解密软件,可以指定大素数P和Q的位数,生成RSA公钥和私钥。还可以用用来对字符型文本进行加解密。
RSA公钥加密,公钥解密,私钥加密,私钥解密,公私钥生成
本文将深入探讨如何在iOS中生成RSA公私钥对,并讲解相关概念和实现步骤。 RSA(Rivest–Shamir–Adleman)是一种非对称加密算法,它基于大数因子分解的数学难题。公钥可以公开,任何人都可以使用它来加密数据,而...
RSA加密解密是一种广泛应用于网络安全中的非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家在1977年提出,因此得名RSA。这种算法基于大数因子分解的困难性,为数据提供了一种安全的传输方式。 ...
总结一下,RSA公私钥生成工具是用于创建RSA加密密钥对的软件,这些密钥对可以用于数据加密、解密、数字签名和验证。OpenSSL是一个常用的工具,可以方便地生成和管理这些密钥。在处理敏感信息时,正确使用RSA公私钥是...
2. 生成公私钥对,私钥用于签名,公钥用于验证。 3. 对数据进行加密,使用公钥加密原始信息。 4. 对加密后的数据进行解密,使用私钥进行解密。 5. 创建签名,使用私钥对消息进行签名。 6. 验证签名,使用公钥和签名...
在这个C++实现的示例中,我们将探讨如何生成公私钥对以及如何使用这些密钥对文件进行加密和解密操作。 首先,我们需要理解RSA算法的基本原理。RSA基于数论中的两个难题:大整数因子分解和欧拉函数的性质。简而言之...
综上所述,微信小程序RSA加解密是保障用户数据安全的重要手段,涉及密钥生成、公钥上传、客户端加密、服务器解密等多个环节,需要开发者对加密算法、网络通信以及微信小程序的API有深入的理解和实践经验。