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

📄 substitute.cpp

📁 有几种密码系统供选择,如RSA密码.能对单个文件进行加密,并且也能对单个文件进行解密
💻 CPP
字号:
#include "stdafx.h"
#include "stdlib.h"

void m2c(BYTE m , BYTE &c , BYTE k)
{
	c=(m+k)%256;
}

void c2m(BYTE m , BYTE &c , BYTE k)
{
	c=(m+256-k)%256;
}

void m2c(int m , int &c , BYTE k)
{
	union{
		int a;
		BYTE b[4];
	}d,e;
	d.a=m;
	for(int i=0;i<4;i++) e.b[i]=(d.b[i]+k)%256;
	c=e.a;
}

void c2m(int m , int &c , BYTE k)
{
	union{
		int a;
		BYTE b[4];
	}d,e;
	d.a=m;
	for(int i=0;i<4;i++) e.b[i]=(d.b[i]+256-k)%256;
	c=e.a;
}

void m2c_vige(BYTE m[] , BYTE c[] , unsigned char *k)
{
	int n=0,i;
	for(i=0;k[i]!='\0';i++)n++;
	for(i=0;i<n;i++)
		c[i]=(m[i]+k[i])%256;
}

void c2m_vige(BYTE m[] , BYTE c[] , unsigned char *k)
{
	int n=0,i;
	for(i=0;k[i]!='\0';i++)n++;
	for(i=0;i<n;i++)
		c[i]=(m[i]+256-k[i])%256;
}


void m2c_p(char m[] , char c[] ,  char k[], int nm)
{
	int n,i,j,js,nk;
	int *korder;
	char kmin,kmax;
	nk=0;
	for(i=0;k[i]!='\0';i++)nk++;//计算密钥长度
	//计算密钥顺序表korder
	korder=(int*)malloc((nk)*sizeof(int));
	for(j=0;j<nk;j++)*(korder+j)=-1;
	kmax=k[0];
	for(i=1;i<nk;i++)
			if(k[i]>kmax) kmax=k[i];
	n=1;
	for(j=0;j<nk;j++)
	{
		kmin=kmax;
		for(i=0;i<nk;i++)
			if(*(korder+i)==-1 && k[i]<=kmin) n=i,kmin=k[i];
		*(korder+n)=j;
	}

	//加密
	n=0;
	for(i=0;i<nk;i++)
	{
		for(j=0;j<nk;j++)
			if(*(korder+j)==i)js=j;
		for(j=js;j<nm;j+=nk)
		{
			c[n]=m[j];
			n++;
		}
	}
 }

void c2m_p(char m[] , char c[] ,  char *k, int nm)
{
	int n,i,j,js,nk;
	int *korder;
	char kmin,kmax;
	nk=0;
	for(i=0;k[i]!='\0';i++)nk++;//计算密钥长度
	//计算密钥顺序表korder
	korder=(int*)malloc((nk)*sizeof(int));
	for(j=0;j<nk;j++)*(korder+j)=-1;
	kmax=k[0];
	for(i=1;i<nk;i++)
			if(k[i]>kmax) kmax=k[i];
	n=1;
	for(j=0;j<nk;j++)
	{
		kmin=kmax;
		for(i=0;i<nk;i++)
			if(*(korder+i)==-1 && k[i]<=kmin) n=i,kmin=k[i];
		*(korder+n)=j;
	}

	//解密
	n=0;
	for(i=0;i<nk;i++)
	{
		for(j=0;j<nk;j++)
			if(*(korder+j)==i)js=j;
		for(j=js;j<nm;j+=nk)
		{
			c[j]=m[n];
			n++;
		}
	}
 }

⌨️ 快捷键说明

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