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;
}
}
分享到:
相关推荐
自带公私钥文件和加解密demo,可通过openssl重新生成密钥文件 确保上传的内容合法合规,涉及侵权内容将会被移除
java 代码实现 获取keystore,cer文件中的私钥公钥,对数据进行加密解密验签签名
java(sm2公私钥生成、加签、验签、加密、解密)demo案列
一个简单的java使用RSA生成公私钥对 非对称加密解密 签名验签的过程,附带一个基本的加密工具类,有兴趣的朋友可以下载下来看看
详细介绍公私钥加密原理: 加密算法:消息摘要算法、对称加密算法、非对称加密算法 消息摘要:哈希(Hash)算法、散列算法;hash\md5 不可逆 对称加密算法:加密和解密使用相同密钥的加密算法,DES 非对称加密算法:...
Lazarus RSA 生成公私钥及加密解密代码,可直接用于工程中。 已在windows10下测试,包括生成128、256、512、768、1024、2048位密钥,用相关的密钥对字符串进行加密解密。
Hash MD5 DES AES RSA加解密实例
里面有两个文件.分别对指定字符串进行加解密,可以对代码进行修改.(需要自带公私钥)
这是一个RSA加密解密软件,可以指定大素数P和Q的位数,生成RSA公钥和私钥。还可以用用来对字符型文本进行加解密。
RSA公钥加密,公钥解密,私钥加密,私钥解密,公私钥生成
本javademo为AES算法实现内容加密,将随机产生16*n byte秘钥,数据内容由AES加密,秘钥内容由一对公私钥进行加密,希望能对秘钥和AES算法的同学有所帮助.
使用RSA生成公私钥对、加解密、及签名验签 JAVA源码,可供学习设计参考。
RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。...所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
sm3 基于SM2算法的加密/解密/签名/验签 , SM3算法的摘要计算 , SM4算法的对称加密/解密 , 以及相应算法的公私钥
用VS2015做的加密解密WPF程序。基于.net4.5平台。AES密码加密解密,生成RAS公钥私钥,基于公私钥的加密解密。RAS签名类。
RSA公私钥生成工具 RSA秘钥生成工具,可用于签名,验签,加密,解密
AES RSA 加密解密工具类以及RSA 签名 和验证签名等方法以及自动生成成对的RSA 公私钥
Java OpenSSL生成的RSA公私钥进行数据加解密详细介绍 项目: JAVA生成的RSA的密文,通过C++来解密。 RSA这里就不多介绍了大家自己去看。 JAVA也是通过包来实现加密和解密的,那么我的C++是通过OPENSSL的库来实现的...
在本软件中,首先生成一对公私钥,然后通过公钥加密文件,将加密后的文件传输给接收方,接收方通过私钥解密文件。这种方式可以有效地防止文件在传输过程中被黑客窃取或篡改。 本软件还具备用户友好的界面和操作方式...
RSA加密工具类,公私钥加解密、公私钥验签,读取私钥.ps8方法。