资源简介
本代码主要用于实现RSA数字签名算法,用java进行编程,能够完整的在eclipse上运行,具体可用于密码学的课程设计等。
代码片段和文件信息
package aaa;
import java.io.*;
import java.math.BigInteger;
import java.util.ArrayList;
public class EnAndDe {
private long p = 0;
private long q = 0;
private long n = 0;
private long t = 0; // 欧拉函数
private long e = 0; // 公匙
private long d = 0; // 密匙
private String mc; // 明文
private long c = 0; // 密文
private long word = 0; // 解密后明文
// 判断是一个数 x 否为素数素数就是判断在 (2√x)范围内有没有除1外的因数如果没有则x数素数
public boolean isPrime(long t) {
long k = 0;
k = (long) Math.sqrt((double) t);
for (int i = 2; i <= k; i++) {
if ((t % i) == 0) {
return false;
}
}
return true;
}
// 随机产生大素数(1e6数量级,注意,太大了要超出范围)
public void bigprimeRandom() {
do {
p = (long) (Math.random() * 1000);
} while (!this.isPrime(p));
do {
q = (long) (Math.random() * 100000);
} while (p == q || !this.isPrime(q));
}
// 输入PQ
public void inputPQ() throws Exception {
this.bigprimeRandom();
System.out.println(“自动生成两个大素数pq分别为:“ + this.p + “ “ + this.q);
this.n = (long) p * q;
this.t = (long) (p - 1) * (q - 1);
System.out.println(“这两个素数的乘积为p*q:“ + this.n);
System.out.println(“所得的t=(p-1)(q-1):“ + this.t);
}
// 求最大公约数
public long gcd(long a long b) {
long gcd;
if (b == 0)
gcd = a;
else
gcd = gcd(b a % b);
return gcd;
}
// 生成公匙
public void getPublic_key() throws Exception {
do {
this.e = 17;
// e满足 e∈(1 ψ(n))且e与ψ(n)最大公约数为1即 e与t互质
} while ((this.e >= this.t) || (this.gcd(this.t this.e) != 1));
System.out.println(“生成的公钥为:“ + “(“ + this.n + ““ + this.e + “)“);
}
// 生成私钥 e*d=1(modψ(n))==> d = (kψ(n)+1) / e
public void getPrivate_key() {
long value = 1; // value 是e和d的乘积
outer: for (long k = 1;; k++) {
value = k * this.t + 1;
if ((value % this.e == 0)) {
this.d = value / this.e;
break outer;
}
}
System.out.println(“产生的一个私钥为:“ + “(“ + this.n + ““ + this.d + “)“);
System.out.println(“私钥d的值为:“ + this.d);
}
// 输入明文
public void getText() throws Exception {
System.out.println(“请输入明文:“);
BufferedReader stdin = new BufferedReader(new InputStreamReader(
System.in));
mc = stdin.readLine();
}
// 解密密文
public void pascolum() throws Exception {
this.getText();
System.out.println(“输入明文为: “ + this.mc);
// 加密
ArrayList cestr = new ArrayList();
for (int i = 0; i < mc.length(); i++) {
this.c = this.colum((long) mc.charAt(i) this.n this.e);
cestr.add(c);
}
System.out.println(“加密后所得的密文为:“ + cestr);
// 解密
StringBuffer destr = new StringBuffer();
for (int j = 0; j < cestr.size(); j++) {
this.word = this.colum(Long.parseLong(cestr.get(j).toString())
this.n this.d);
destr.append((char) word);
}
System.out.println(“解密后所得的明文为:“ + destr);
}
// 加密、解密计算
public long colum(long mc long n long key) {
BigInteger bigy = new BigInteger(String.valueOf(mc));
BigInteger bign = new BigInteger(String.valueOf(n));
BigI
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-09-26 21:11 RSA数字签名算法的具体实现\
目录 0 2017-09-26 21:11 RSA数字签名算法的具体实现\.me
文件 0 2016-07-28 17:27 RSA数字签名算法的具体实现\.me
文件 42583 2017-01-05 11:27 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 21:11 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 21:11 RSA数字签名算法的具体实现\.me
文件 20 2016-09-07 10:57 RSA数字签名算法的具体实现\.me
文件 32 2016-09-07 10:57 RSA数字签名算法的具体实现\.me
文件 250 2016-12-15 15:34 RSA数字签名算法的具体实现\.me
文件 438 2016-07-28 17:28 RSA数字签名算法的具体实现\.me
文件 250 2016-12-15 15:54 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 21:11 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 21:11 RSA数字签名算法的具体实现\.me
文件 456 2016-11-26 17:13 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 21:11 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 21:11 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 19:57 RSA数字签名算法的具体实现\.me
文件 6699 2016-12-15 00:15 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 19:57 RSA数字签名算法的具体实现\.me
文件 6776 2016-12-15 00:07 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 21:11 RSA数字签名算法的具体实现\.me
文件 0 2016-12-15 00:26 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 19:57 RSA数字签名算法的具体实现\.me
文件 6195 2016-12-15 00:08 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 19:57 RSA数字签名算法的具体实现\.me
文件 5642 2016-12-14 18:25 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 19:57 RSA数字签名算法的具体实现\.me
文件 6689 2016-12-15 00:16 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 19:57 RSA数字签名算法的具体实现\.me
文件 6002 2016-12-14 23:59 RSA数字签名算法的具体实现\.me
目录 0 2017-09-26 19:57 RSA数字签名算法的具体实现\.me
............此处省略305个文件信息
相关资源
- 数十个手机JAVA 320X480触摸大屏游戏
- JAVA JSP车辆管理系统
- Java课程设计酒店管理系统+报告文档
- javaqq私聊+群聊+截图+文件传送等源码
- Java Web学校餐费管理系统
- Java的web在线考试系统设计(含源码
- JAVA JSP企业车辆管理系统 源代码 论文
- JAVA开发实战经典(名师讲坛)].李兴
- JavaWeb网上图书商城完整项目资料
- maven+ssm 实现java版视频上传预览
- java贪吃蛇课程设计156714
- java飞机大战156086
- JavaWeb开发的BBS系统
- JAVA短信群发、开发包、含例程
- design-pattern-java-刘伟.pdf
- JSP JAVA药品销售管理系统
- java项目开发自学手册源码
- Java斗地主游戏源码.zip
- java银行账户管理系统
- 敏感信息脱敏源码和jar包
- 微信三级分销java后台完整源码.rar
- Java外挂开发之内存修改程序含源码类
- Java开发实战经典名师讲坛李兴华.pd
- SSM+Mysql实现防慕课网项目.zip
- java大作业--画图板
- 李刚疯狂Java讲义第三版光盘内容
- jsp(java)订票系统(论文专题)
- Java微信小程序商城
- java源码包3
- 深入体验Java_Web开发内幕-核心基础超
评论
共有 条评论