随机数加密算法的解密算法

      
解密程序就是利用加密密钥把加密的文档即秘文用密钥恢复成原来的文档。算法实现的原理就是用密钥把秘文文档重新编号,然后按密钥的排序结果输出秘文,就可以得到原加密的文档,也就达到了解密的目的。
#include "mpi.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <iostream>
 
void  main (int argc, char * argv[])
{
     char str[15];// 用于保存加密的字符串 
     int myid, numprocs; // 进程号、进程数
     int namelen;
    char processor_name[MPI_MAX_PROCESSOR_NAME];
    MPI_Status status;
    MPI_Init ( &argc, &argv );
    MPI_Comm_rank ( MPI_COMM_WORLD, &myid );
    MPI_Comm_size ( MPI_COMM_WORLD, &numprocs );
    MPI_Get_processor_name(processor_name,&namelen);   
    if(myid==0) // 读取密钥信息,并把密钥传给1号进程。
     {
         FILE *key=fopen("key.txt","r");
         if(key){
         int temp;    
         temp=fgetc(key)-48;
         fprintf(stderr," 密钥:");
         /* 读到文件结束,结束符为-1,ASCII码是-1-48=-49,所以把-49作为文件结束标志*/
         while (temp!=-49)
         {
              fprintf(stderr,"%d",temp);
              MPI_Send(&temp,1,MPI_INT,1,0,MPI_COMM_WORLD);
              temp=fgetc(key)-48;             
         }
         fprintf(stderr,"/n");
         MPI_Send(&temp,1,MPI_INT,1,0,MPI_COMM_WORLD);     
         }
     }else if(myid==1)//1 号进程负责用接收到密钥解密加密的文档。
     {
         int recvnum=0;
         FILE *out=fopen("out.txt","r");// 打开要解密的文档
         fgets(str,15,out);
         fprintf(stderr," 密文:");
         fprintf(stderr,str);
         fprintf(stderr,"/n");
         FILE *source=fopen("source.txt","w");// 用于保存解密后的文档
         MPI_Recv(&recvnum,1,MPI_INT,0,0,MPI_COMM_WORLD,&status);
         fprintf(stderr," 解密后的原文是:");
         while(recvnum!=-49)// 读到文件尾,结束
         {
              fprintf(stderr,"%c",str[recvnum]);
              fprintf(source,"%c",str[recvnum]);
              MPI_Recv(&recvnum,1,MPI_INT,0,0,MPI_COMM_WORLD,&status);             
         }
         fprintf(stderr,"/n");      
     }
   fprintf( stderr, "Process %d of %d on %s/n",myid, numprocs, processor_name );   
   MPI_Finalize ( );
}
       说明:利用加密后的密文: out.txt 和解密密钥 key.txt 解密,密文为: udenctu.jb ,密钥为 9805721643 。如上图所示,解密后的文档保存到 source.txt 中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wjkwjk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值