RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。
公钥是与私钥算法一起使用的密钥对的非秘密一半。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥)其中的一个向外界公开,称为公钥;另一个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
2.1: 判断一个正整数是否为质数的算法。函数签名如下
int isPrime(long a)
输入:一个长整数a
输出:返回1(为质数),返回0(非质数)
import java.io.IOException;
public class IsPrime {
public static int isPrime(int a){
for(int i=2;i<a/2;i++){
if(a%2 == 0 ){
a = 0;
}
if(a!=0)
a = 1;
}
return a;
}
public static void main(String [] args){
IsPrime isPrime = new IsPrime();
System.out.println("请输入一个数:");
try {
int num = (int)System.in.read();
System.out.println(isPrime(num));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
验证结果为:
2.2: 随机生成一个n bit位的长整数。函数签名如下
long createRndInteger(int n)
输入:随机数bit位的长度为n(解释:3bit位,则最大为111,最小为100;n bit位,则该数字二进制长度为n)
输出:返回该随机数
import java.util.Scanner;
public class Random {
public static void main(String [] args){
Random rnd = new Random();
System.out.println("请输入二进制数的位数");
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
System.out.println("随机生成的"+num+"位二进制数转化为long整数是");
System.out.println(createRndInteger(num));
}
public static long createRndInteger(int n){
long result = (long)(Math.random()*Math.pow(2, n-1)+Math.pow(2, n-1));
return result;
}
}
运行结果为: