明文与密文的转换(密文和明文转换)

2023-03-03 6:17:57 密码用途 思思

是正整数,1≤x ≤26, 被3整除)是正整数,1≤x ≤26, 被3除余1)是正整数,1≤ x≤26, 被3除余2) 这几句是什么意思,楼主你好歹把题目写清楚嘛~

什么是明文、密钥和密文?

明文、密钥和密文的意思分别是:

1、明文:

明文,是指没有加密的文字(或者字符串),一般人都能看懂的意思,属于密码学术语。在通信系统中它可能是比特流,如文本、位图、数字化的语音或者数字化的视频图像等。

2、密钥:

密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。

3、密文:

密文是加了密的的文字,明文是加密之前的文字。加密这个词有时指密文,但通常用来指加密的方法。对明文施加某种伪装或变换后的输出。也可理解为不可直接理解的字符或比特集。但可通过算法还原的被打乱的消息,与明文相对。

扩展资料:

信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。

所以在实际的应用中,人们通常将两者结合在一起使用,例如,对称密钥加密系统用于存储大量数据信息,而公开密钥加密系统则用于加密密钥。

对于普通的对称密码学,加密运算与解密运算使用同样的密钥。通常,使用的对称加密算法比较简便高效,密钥简短,破译极其困难,由于系统的保密性主要取决于密钥的安全性。

所以,在公开的计算机网络上安全地传送和保管密钥是一个严峻的问题。正是由于对称密码学中双方都使用相同的密钥,因此无法实现数据签名和不可否认性等功能。

参考资料来源:百度百科—明文

参考资料来源:百度百科—密钥

参考资料来源:百度百科—密文

密文和明文怎样转换

include iostream;

using namespace std;

#define N 6 //定义N的大小

#define M 5 //定义M的大小,N=M

void main()

{

char P[N]={0};

char K[M]={0};

char C[M]={0};//因为要用Ki加密,所以C[]只能有M个大

int i,j;//定义循环变量

cout "请输入明文数组,你可以输入"N"个字符长度"endl;

for (i=0;iN;i++)//为P[N]赋值

{

cout " P"i"=";

cin P[i];

}

cout "请输入密钥数组,你可以输入"M"个字符长度"endl;

for (j=0;jM;j++)//为K[M]赋值

{

cout "K"j"=";

cin K[j];

}

for (i=0;iM;i++)//加密!因为K[j]个数有限,只能用M做为循环次数

{

j=i%(M+1);

C[i]=P[i]+K[j];

cout P[i]endl;

cout K[j]endl;

cout C[i]endl;

if (0C[i])//7F=127

{

//C[cnt]=P[cnt]+K[i%(j+1)];//Ci=Pi+Kj(j=i mod(m+1)) (当Ci=7FH)

C[i]=C[i]+128;

cout C[i]endl;

}

else

{

//C[cnt]=P[cnt]+K[i%(j+1)]-128;//Ci=Pi+Kj-80H(j=i mod(m+1)) (当Ci7FH)

C[i]=C[i];

cout C[i]endl;

}

}

coutendlendl"输出加密后的密文C[i]如下:"endl;

for (i=0;i=40;i++)

cout "#";

cout endl;

for (i=0;iM;i++)//输出加密后的C[i]

{

cout C[i]endl;

}

for (i=0;i=40;i++)

cout "#";

cout endl;

for (i=0;iM;i++)//解密!因为K[j]个数有限,只能用M做为循环次数

{

j=i%(M+1);

if (C[i]=K[j])

{

P[i]=C[i]-K[j]+128;//Pi=Ci-Kj (j=i mod(m+1)) (当Ci=Kj)

}

else

{

P[i]=C[i]-K[j];//80H=128,Pi=Ci-Kj+80H(j=i mod(m+1))(当CiKj)

}

}

coutendlendl"输出解密后的明文P[i]如下:"endl;

for (i=0;i=36;i++)

cout "#";

cout endl;

for (i=0;iN;i++)//输出解密后的P[i]

{

cout P[i]endl;

}

for (i=0;i=36;i++)

cout "#";

cout endlendl;

明文和密文转换

include iostream;

using namespace std;

#define N 6 //定义N的大小

#define M 5 //定义M的大小,N=M

void main()

{

char P[N]={0};

char K[M]={0};

char C[M]={0};//因为要用Ki加密,所以C[]只能有M个大

int i,j;//定义循环变量

cout "请输入明文数组,你可以输入"N"个字符长度"endl;

for (i=0;iN;i++)//为P[N]赋值

{

cout " P"i"=";

cin P[i];

}

cout "请输入密钥数组,你可以输入"M"个字符长度"endl;

for (j=0;jM;j++)//为K[M]赋值

{

cout "K"j"=";

cin K[j];

}

for (i=0;iM;i++)//加密!因为K[j]个数有限,只能用M做为循环次数

{

j=i%(M+1);

C[i]=P[i]+K[j];

cout P[i]endl;

cout K[j]endl;

cout C[i]endl;

if (0C[i])//7F=127

{

//C[cnt]=P[cnt]+K[i%(j+1)];//Ci=Pi+Kj(j=i mod(m+1)) (当Ci=7FH)

C[i]=C[i]+128;

cout C[i]endl;

}

else

{

//C[cnt]=P[cnt]+K[i%(j+1)]-128;//Ci=Pi+Kj-80H(j=i mod(m+1)) (当Ci7FH)

C[i]=C[i];

cout C[i]endl;

}

}

coutendlendl"输出加密后的密文C[i]如下:"endl;

for (i=0;i=40;i++)

cout "#";

cout endl;

for (i=0;iM;i++)//输出加密后的C[i]

{

cout C[i]endl;

}

for (i=0;i=40;i++)

cout "#";

cout endl;

for (i=0;iM;i++)//解密!因为K[j]个数有限,只能用M做为循环次数

{

j=i%(M+1);

if (C[i]=K[j])

{

P[i]=C[i]-K[j]+128;//Pi=Ci-Kj (j=i mod(m+1)) (当Ci=Kj)

}

else

{

P[i]=C[i]-K[j];//80H=128,Pi=Ci-Kj+80H(j=i mod(m+1))(当CiKj)

}

}

coutendlendl"输出解密后的明文P[i]如下:"endl;

for (i=0;i=36;i++)

cout "#";

cout endl;

for (i=0;iN;i++)//输出解密后的P[i]

{

cout P[i]endl;

}

for (i=0;i=36;i++)

cout "#";

cout endlendl;