⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rsa.cpp

📁 rsa算法C语言实现,自己编的,希望对大家有借鉴.
💻 CPP
字号:
// rsa.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <math.h>

void main()
{
	long p,q,n,t,e,d,i;
	/*定义明文的长度及内容*/
	char mingwen[50] = {"aba"};
	long jiamiwenzi[50];
	char jiemiwenzi[50];
	p=149,q=193;
	n=p*q;
	t=(p-1)*(q-1);
	/*取得 e*/
	i=2;
	while(1)

	{
		long a=t,b=i,c;
		a,b=t>i?t,i:i,t;
		while(1)
		{
			if(b==0) break;
			c=a%b;
			a=b;
			b=c;
		}
		if(a==1) 
		{
			e=i;
			break;
		}
		i++;
	}
	/*取得 d*/
	i=1;
	while(1)
	{
		if((t*i+1)%e==0)
		{
			d=(t*i+1)/e;
			break;
		}
		i++;
	}
	/*输出数据与明文*/
	printf("p,q,n,e,d: %d,%d,%d,%d,%d\n",p,q,n,e,d);
	printf("明文: %s\n",mingwen);
	/*加密*/
	for(i=0;i<50;i++)
	{
		long a=e,b=1,c;
		for(c=mingwen[i];a>0;a>>=1)
		{
			if(a%2==1) b=(b*c)%n;
			c=(c*c)%n;
		}
		jiamiwenzi[i]=b;
	}
	/*十六进形式输出密文*/
	printf("密文: ");
	for(i=0;i<50;i++)
	printf("%x",jiamiwenzi[i]);
	/*解密*/
	for(i=0;i<50;i++)
	{
		long a=d,b=1,c;
		for(c=jiamiwenzi[i];a>0;a>>=1)
		{
			if(a%2==1) b=(b*c)%n;
			c=(c*c)%n;
		}
		jiemiwenzi[i]=b;
	}
	/*输出解密后的消息*/
	printf("\n解密后的密文: %s\n",jiemiwenzi);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -