算法设计与分析第二周作业

RSA公钥加密算法RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥

数字签名又称公钥数字签名 以电子形式存在于数据信息之中的,或作为其附件的或逻辑上与之有联系的数据,可用于辨别数据签署人的身份,并表明签署人对数据信息中包含的信息的认可。

公钥:与公钥算法一起使用的密钥,非秘密一半。

DES:也叫数据加密算法DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的第8位作为奇偶校验位),产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 轮循环,使用异或置换代换移位操作四种基本运算。

公钥加密 与 数字签名 之间的联系与区别

公钥加密,私钥解开,,私钥私有。有私钥才能解密。数字签名 。私钥加密,公钥解密。保证有私钥方才能加密

2.1判断一个正整数是否为质数的算法
int isPrime (long a)
{
cin>>a;
for (long i=2; i < a; i++)
{
if (a % i == 0)
{
return 0;
}
}

return 1;
}



2.2: 随机生成一个n bit位的长整数。
long createRndInteger (int n)
{
cin>>n;
long c;
long d
for (int j = 0; j < n; j++)
{
d = 1;
for (int k = 0; k < j; k++)
{
d *= 10; 
}
c += rand(0, 9) * d;
}
return c;
}



2.3:随机生成一个n bit位的长质数
long createRandPrime (int m)
{
cin>>m;
long e;
long f
do 
{


for (int p = 0; p < m - 1; m++)
{
long f = 1;
for (int q = 0; q < p; q++)
{
f *= 10;
}
e += rand(0, 9) * f;
}


int r;
for (long l = 2; l < e; l++)
{
r = 1;
if (e % l == 0)
{
r = 0;
}
}


}
while (r=1);
return e;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值