1、
答:(1)RSA:是使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”公开密钥密码体制;在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然秘密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。
(2)数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
(3)公钥是与私钥算法一起使用的密钥对的非秘密一半。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥)其中的一个向外界公开,称为公钥;
(4)DES即数据加密算法,是一种对称加密算法,使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的第8位作为奇偶校验位),产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 轮循环,使用异或,置换,代换,移位操作四种基本运算。
公钥加密 与 数字签名 之间的联系与区别:当发送者发送数据信息给接受者的时候,会用私钥对数字签名进行加密和用公钥加密后的原文一起发送,接收数据的一方会用公钥对加密后的数字签名进行验证,已保证数据的完整性。
2、程序编写。 (30分钟-3小时)
public class demo {
public static void main(String[] args) {
System.out.println("请输入一个正整数:");
Scanner sc=new Scanner(System.in);
long x=sc.nextLong();
int y= isPrime(x);
if(y==1){
System.out.println(x+"是质数!");
}else{
System.out.println(x+"不是质数!");
}
}
public static int isPrime(long a){
if(a==1){
return 1;
}
for(int i=2;i<a;i++){
if(a%i==0){
return 0;
}
}
return 1;
}
}
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
System.out.println("请输入随机生成n bit位的长整数的长度:");
Scanner sc=new Scanner(System.in);
int x= sc.nextInt();
long y= createRndInteger(x);
System.out.println("随机生成的"+x+"位的长整数是:"+y);
}
public static long createRndInteger(int n){
int[] a={0,1};
StringBuilder sb=new StringBuilder();
Random random=new Random();
if(n==1){
return a[random.nextInt(a.length)];
}else{
sb.append(1);
for(int i=0;i<n-1;i++){
sb.append(a[random.nextInt(a.length)]);
}
long num=Long.parseLong(sb.toString());
return num;
}
}
}