北理工网络安全导论作业:RSA算法

本文通过选取质数p=37和q=29,计算n=p*q和欧拉函数φ(n),然后利用欧拉定理找到合适的公钥e和私钥d,实现RSA加密和解密过程。具体步骤包括计算n=1073,φ(n)=1008,选择e=11,求得d=275。举例说明了明文32经过加密变为479,再通过解密恢复为32,展示了RSA算法的有效性。
摘要由CSDN通过智能技术生成

选取质数p=37,q=29

n=p*q=1073

欧拉函数φ(n)=(p-1)(q-1)=1008

使用以下程序找出所有符合要求的e和d

#include<iostream>
#include<string>
#include<cmath>
#include<cstdio>
using namespace std;

bool isprime(int x)
{
    double l=sqrt((double)x);
    for(int i=2;i<=l;i++)
    {
        if(x%i==0) return false;    
    } 
    return true;
}

int main()
{
    int f;
    cin>>f;
    for(int e=2;e<f;e++)
    {
        if(!isprime(e)) continue;
        for(int d=0;d<=f;d++) if(d*e%f==1) cout<<e<<' '<<d<<endl;
    }
    return 0;
} 

选择e=11

由ed mod φ(n)=1解出d=275

由此得公钥n=1073、e=11,私钥n=1073、d=275。p=37,q=29, φ(n)=1008,d=275是陷门。

明文32,加密得32^11 mod 1073 =479;解密得479^275 mod 1073 =32

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值