问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

rsa加密算法 java

发布网友 发布时间:2022-05-09 20:52

我来回答

1个回答

热心网友 时间:2023-10-19 05:25

代码如下:main方法用于测试的,不是算法本身。

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;

import javax.crypto.Cipher;

public class RSACrypto
{
private final static String RSA = "RSA";
public static PublicKey uk;
public static PrivateKey rk;

public static void generateKey() throws Exception
{
KeyPairGenerator gen = KeyPairGenerator.getInstance(RSA);
gen.initialize(512, new SecureRandom());
KeyPair keyPair = gen.generateKeyPair();
uk = keyPair.getPublic();
rk = keyPair.getPrivate();
}

private static byte[] encrypt(String text, PublicKey pubRSA) throws Exception
{
Cipher cipher = Cipher.getInstance(RSA);
cipher.init(Cipher.ENCRYPT_MODE, pubRSA);
return cipher.doFinal(text.getBytes());
}

public final static String encrypt(String text)
{
try {
return byte2hex(encrypt(text, uk));
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}

public final static String decrypt(String data)
{
try{
return new String(decrypt(hex2byte(data.getBytes())));
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}

private static byte[] decrypt(byte[] src) throws Exception
{
Cipher cipher = Cipher.getInstance(RSA);
cipher.init(Cipher.DECRYPT_MODE, rk);
return cipher.doFinal(src);
}

public static String byte2hex(byte[] b)
{
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n ++)
{
stmp = Integer.toHexString(b[n] & 0xFF);
if (stmp.length() == 1)
hs += ("0" + stmp);
else
hs += stmp;
}
return hs.toUpperCase();
}

public static byte[] hex2byte(byte[] b)
{
if ((b.length % 2) != 0)
throw new IllegalArgumentException("长度不是偶数");

byte[] b2 = new byte[b.length / 2];

for (int n = 0; n < b.length; n += 2)
{
String item = new String(b, n, 2);
b2[n/2] = (byte)Integer.parseInt(item, 16);
}
return b2;
}

//just for test
public static void main(String args[])
{
try
{
RSACrypto.generateKey();
String cipherText = RSACrypto.encrypt("asdfghjh");
System.out.println(cipherText);
String plainText = RSACrypto.decrypt(cipherText);
System.out.println(plainText);
}
catch(Exception e)
{
e.printStackTrace();
}
}

}
求采纳为满意回答。追问大神,我不希望密钥是随机的啊,我希望它一直是固定的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 去工商局核名带什么材料 到工商局核名需要提交哪些资料? 什么叫财务管理? 什么叫股东财富最大化? 请阐述利润最大化的不足 你们觉得LADY gaga是不是比布兰妮更像年轻时的麦当娜?甚至还出位过麦当娜 考研 资产评估需要那几本书 麦当娜23岁女儿继承母亲风韵,尤物身材美炸天,风韵多娇的她有多迷人? 财务管理第三版答案王化成副主编佟岩 黎来芳 大家觉得lady gaga 和年轻时的麦当娜 有没有几分相似之处啊? 麦当娜9岁时就在父亲面前表演脱衣舞,12岁就有了性经历,这是真的吗? 曾自曝初到纽约时曾在屋顶被强奸,麦当娜究竟有着怎样的悲惨史? 被老师移出群怎么样跟老师说拉进去? 如果老师把我移出群聊怎么办开学后怎么办? 被老师踢出群了,怎么才能回群呢? 二手房买卖合同纠纷。卖方不肯卖了。买方非想买。起诉去*大概会是怎么判? 我的地承包给别人了十年还有七年现在电业局立电线杆给200钱这钱给甲方还是给乙方? 关于栽电杆的法律规定是什么 我是电脑小白,刚买了电脑,请问都应该装什么?电脑管家之类的?怎么装?还有防火墙怎么弄? 小白智家PC端下载了,一打开就显示网络错误,点击重试。怎么点都没用只能找你帮忙了? 求我的世界刷怪塔存档电脑版的要可以同时刷小白僵尸火焰人和蜘蛛的那种存档! 鲁大师要是出个电脑是不是就是小白最爱了 c#怎么调用java生成的RSA 公钥进行加密 苹果12pro+max为什么没电充电时会有闪电 安徽新华学院网络课怎么上 福斯特为什么这么好?福斯特2021第一季业绩?福斯特股票新浪财经? 福斯特基本面全面分析?福斯特挂牌价多久更新一次?福斯特股今天的股价? 为什么我的QQ空间打开后会到了主页,如果要进动态就要重新登陆的 福斯特今天为什么下跌这么多?福斯特股票2021年报?福斯特股票为何便宜? 纠结的心情说说怎么写? Megastudy 这样的模式在中国是否能行得通? 要疯了 跪求帮助: 一家韩国很火的教育机构megastudy 2010年进驻中国广东省,有人能告诉我他们的联系方式 心情纠结的句子 表达心情纠结的句子 谁知道局域网参考模型中数据链路层的LLC子层,MAC子层各是什么含义? 不同的局域网MAC子层可以不同吗 数据链路层分为LLC和MAC子层,为什么说局域网里很多适配器都没有LLC协议了,那LLC的职责由谁完成? 测骨龄怎么测的,痛吗?多少钱 宿州市立能查骨龄吗? 本人94年 女孩 现如今身高158.5cm 请问我会长高吗? GP算法的介绍 最长距离法谱系聚类图怎么画