• 大小: 17.88MB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-01-30
  • 语言: Java
  • 标签: 密码学  Java  

资源简介

本代码主要用于实现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数字签名算法的具体实现\.metadata\
     文件           0  2016-07-28 17:27  RSA数字签名算法的具体实现\.metadata\.lock
     文件       42583  2017-01-05 11:27  RSA数字签名算法的具体实现\.metadata\.log
     目录           0  2017-09-26 21:11  RSA数字签名算法的具体实现\.metadata\.mylyn\
     目录           0  2017-09-26 21:11  RSA数字签名算法的具体实现\.metadata\.mylyn\.taskListIndex\
     文件          20  2016-09-07 10:57  RSA数字签名算法的具体实现\.metadata\.mylyn\.taskListIndex\segments.gen
     文件          32  2016-09-07 10:57  RSA数字签名算法的具体实现\.metadata\.mylyn\.taskListIndex\segments_1
     文件         250  2016-12-15 15:34  RSA数字签名算法的具体实现\.metadata\.mylyn\.tasks.xml.zip
     文件         438  2016-07-28 17:28  RSA数字签名算法的具体实现\.metadata\.mylyn\repositories.xml.zip
     文件         250  2016-12-15 15:54  RSA数字签名算法的具体实现\.metadata\.mylyn\tasks.xml.zip
     目录           0  2017-09-26 21:11  RSA数字签名算法的具体实现\.metadata\.plugins\
     目录           0  2017-09-26 21:11  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.compare\
     文件         456  2016-11-26 17:13  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.compare\dialog_settings.xml
     目录           0  2017-09-26 21:11  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\
     目录           0  2017-09-26 21:11  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\
     目录           0  2017-09-26 19:57  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\52\
     文件        6699  2016-12-15 00:15  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\52\d0995db618c20016156fd64fd818ae61
     目录           0  2017-09-26 19:57  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\54\
     文件        6776  2016-12-15 00:07  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\54\f022188b17c20016156fd64fd818ae61
     目录           0  2017-09-26 21:11  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\71\
     文件           0  2016-12-15 00:26  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\71\708468061ac200161d29fa5deb783ab7
     目录           0  2017-09-26 19:57  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\8\
     文件        6195  2016-12-15 00:08  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\8\a083443e18c20016156fd64fd818ae61
     目录           0  2017-09-26 19:57  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\82\
     文件        5642  2016-12-14 18:25  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\82\90a4735516c20016156fd64fd818ae61
     目录           0  2017-09-26 19:57  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\8f\
     文件        6689  2016-12-15 00:16  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\8f\f020b12e19c20016156fd64fd818ae61
     目录           0  2017-09-26 19:57  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\95\
     文件        6002  2016-12-14 23:59  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\95\c0bec31e17c20016156fd64fd818ae61
     目录           0  2017-09-26 19:57  RSA数字签名算法的具体实现\.metadata\.plugins\org.eclipse.core.resources\.history\b8\
............此处省略305个文件信息

评论

共有 条评论