admin 管理员组

文章数量: 887021


2024年1月4日发(作者:bpm系统)

仿射密码的C++语言实现

-----------基本原理实现程序

#include

#include"math.h"

#define M 26 //定义密钥空间

struct vector

{

int a;

int b;

};

int Inverse(int a)

//求解逆元函数

{

for(int i=2;i

{

if((a%i == 0)&&(M%i == 0))

{

cout<<"你输入的元素和密钥空间数量不互素,请你重新输入一个试试!"<

cout<<"他们存在公因子:"<

return -1;

}

}

int temp = 0,temp_a,temp_b;

vector v1,v2;

v1.a = 0;

v1.b = M;

v2.a = 1;

v2.b = a;

while(true)

{

temp = int(v1.b/v2.b);

temp_a = v1.a;

temp_b = v1.b;

v1.a = v2.a;

v1.b = v2.b;

v2.a = temp_a - temp * v2.a;

v2.b = temp_b - temp * v2.b;

// cout<

if(v2.b == 1)

break;

}

if(v2.a > 0)

return v2.a;

else

return M+v2.a;

}

int Encryption(int m,int k1,int k2)

{

return (k1*m+k2)%M;

}

int Decryption(int c,int k1,int k2)

{

int temp_k = Inverse(k1);

int result = (temp_k*(c-k2))%26;

if(result>0)

return result;

else

return M+result;

}

void main()

{

int k1=23,k2=17,m=21,c;

c = Encryption(m,k1,k2);

}

cout<

cout<

cout<

m = Decryption(c,k1,k2);

cout<


本文标签: 密钥 实现 空间 元素 语言