zoukankan      html  css  js  c++  java
  • Abstract Algebra chapter 7

    7.7:Encrypt each of the following RSA messages x so that x is divided into blocks of integers of length 2; that is, if x = 142528,encode 14,25,and 28 separately.

    RSA加密方法:y=x^E mod n

    计算时可采用重复乘方法(repeated squares)

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<string>
     5 #include<cmath>
     6 #include<cstdio>
     7 using namespace std;
     8 
     9 int binary[20];
    10 double mod[20];
    11 
    12 int main()
    13 {
    14     int n,E,x;
    15     while ((cin>>n>>E>>x)&&n&&E&&x)
    16     {
    17         memset(binary,0,sizeof(binary));
    18         memset(mod,0,sizeof(mod));
    19         for (int i=19;i>=0;i--)
    20         {
    21             if (1<<i <= E) 
    22             {
    23                 binary[i]=1;
    24                 E-= (1<<i);
    25             }
    26             if (E<=0.001) break;
    27         }
    28         mod[0]=x%n;
    29         for (int i=1;i<sizeof(binary);i++)
    30         {
    31             mod[i]=fmod(pow(mod[i-1],2),n);
    32         }
    33         double temp = 1;
    34         for (int i=0;i<sizeof(binary);i++)
    35         {
    36             if (binary[i]==1) 
    37             {
    38                 temp = fmod(fmod(temp,n)*fmod(mod[i],n),n);
    39             }
    40         }
    41         cout<<temp<<endl;
    42     }
    43     return 0;
    44 }
    45         
    View Code
  • 相关阅读:
    redhat 5 中文乱码
    生成树
    交换机端口模式
    链路聚合
    AP注册
    信息收集
    Python 25 Django跨域请求
    Python 24 Django之csrf中间件
    Python 23 Django基础
    Python 21 Flask(三)第三方组件
  • 原文地址:https://www.cnblogs.com/giddens/p/4361013.html
Copyright © 2011-2022 走看看