几种古典密码学算法

古典密码学可以分为代替密码(也叫做移位密码)和置换密码(也叫做换位密码)两种,其中代替密码典型的有Caesar密码,仿射变换等,置换密码有单表置换和多表置换等。

下面是几种常见古典密码算法的实现。

1.Caesar密码

void encrypt(char* text,int k,char cipher[1024]){
	int a[26];int A[26];
	int m;
	for(int i=97;i<123;i++){
		a[i-97]=i;
		A[i-97]=i-32;
	}

	int len=strlen(text);
	for(int j=0;j

2.单表置换

//#include "Ceasar.h"
#include "stdafx.h"

void transkey(char* key,char table[27]){
	char tem[100]={0};
	char table1[30]={0};
	for(int i=97;i<123;i++)
		table1[i-97]=i;

	int len1=strlen(key);
	strcpy(tem,key);
	strcpy(tem+len1,table1);

	int len=strlen(tem);
	int k=1;int flag;
	if(isupper(tem[0]))
		tem[0]+=32;
	table[0]=tem[0];
	for(int i=1;i
3.仿射变换

//#include "Ceasar.h"
#include "stdafx.h"


void encrypt(char* text,int k1,int k2,char cipher[1024]){
	int len=strlen(text);
	int e=0;
	for(int j=0;j


4.维吉尼亚密码

//#include "Ceasar.h"
#include "stdafx.h"


void encrypt(char* text,char* key,char cipher[1024]){
	int len=strlen(text);
	int lenkey=strlen(key);
	for(int j=0;j




你可能感兴趣的:(C/C++)