第二周作业--RSA算法

RSA:是一种非对称加密算法(所谓非对称加密算法,是指一对加密密钥和解密密钥,这两个密钥数学相关

又称为公开密钥加密算法),该算法依托于数学里面的“极大整数因式分解“的艰难性,而建立。


数字签名:如果解密密钥是公开的(公钥公开),用加密密钥加密信息(私钥加密),可以用公开的公钥对

解密,用于客户验证持有私钥一方来发布的数据或者文件是完整准确的,接受者由此可知这条信息确实来自

拥有私钥的某人,这被称为数字签名。

数字证书:公钥的表现形式就是数字证书。


公钥:如果加密密钥是公开的,这用于客户给私钥所有者上传加密的数据。称为公开密钥加密。


DES:是一种基于56位密钥的对称加密算法,于2001年,DES作为一种标准已经被高级加密标准(AES)所

取代,有时作为算法称为DEA。是一种将固定长度的信息通过一系列复杂的操作变成同样长度的密文的算法。

AES:即高级加密标准,是一种迭代的,对称加密算法,基于排列和置换运算,排列是对数据重新进行排列,

置换是将一个数据单元替换位另一个,AES使用几种不同的方法来执行排列和置换运算。

---------------------------------------------------------------------------------------------------------------------------------------

2.1: 判断一个正整数是否为质数的算法。函数签名如下
     int isPrime(long a)
    输入:一个长整数a
    输出:返回1(为质数),返回0(非质数)

#include<iostream>
#include<math.h>
using namespace std;
int isprime(int n)
{int j,i;
 j=sqrt(n)+1;
 for(i=2;i<j;i++)
  if(n%i==0)
    return 0;//不是素数
 return 1;//是素数
}

int main(){
 int word;
 cout<<"请输入一个大于1的数:"<<endl;
 cin>>word;
 if(isprime(word))
  cout<<word<<"是素数"<<endl;
 else
  cout<<word<<"不是素数"<<endl;

 return 0;
}


----------------------------------------------------------------------------------------------------------------------------------------------

2.2: 随机生成一个n bit位的长整数。函数签名如下
    long createRndInteger(int n)
    输入:随机数bit位的长度为n(解释:3bit位,则最大为111,最小为100;n bit位,则该数字二进制长度为n)
    输出:返回该随机数


#include<iostream>
#include<math.h>
#include<time.h>
#include<stdlib.h>
using namespace std;

//产生随机数
int suiji(int r){
 float ran_numf=0.0;
 srand((unsigned)time(0));
 ran_numf=rand()/(float)(RAND_MAX);
 long a;
 a=(long)(ran_numf*(pow(2,r)-1));
 return a;
}

//转换成二进制
void binary(long n){
  if(n<2)
    cout<<n;
  if(n>=2)
   {binary(n/2);
     cout<<n%2;}
}

int main(){
 int num;
 long p;
 cout<<"请输入一个随机数bit位的长度:"<<endl;
 cin>>num;
 p=suiji(num);
 binary(p);
 return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值