置换密码代码简单实现(C语言)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dyw_666666/article/details/82466894

置换只不过是一个简单的换位,每个置换都可以用一个置换矩阵Ek来表示。每个置换都有一个与之对应的逆置换Dk。置换密码的特点是仅有一个发送方和接受方知道的加密置换(用于加密)及对应的逆置换(用于解密)。它是对明文L长字母组中的字母位置进行重新排列,而每个字母本身并不改变。

代码实现:

#include<stdio.h>
#include<string.h>
int main()
{
    char m[999999],c[999999],mm[999999];
    int x[26],y[26];
    int t,k,len;
    printf("请输入你要输入的明文:");
    scanf("%s",m);
    len=strlen(m);
    printf("\n");

    printf("选择密钥长度:");
    scanf("%d",&k);
    t=k-len%k;
    printf("\n");

    printf("请输入你选择的密钥方式:\n");
    for(int i=0; i<k; i++)
        scanf("%d",&x[i]);

    for(int i=0; i<k; i++)
        scanf("%d",&y[i]);

    for(int i=0; i<len+t+1; i++)
        c[i]=m[(y[i-i/k*k]-1)+(i/k)*k];

    for(int i=0; i<len+t+1; i++)
        printf("%c",c[i]);
    printf("\n");

    return 0;
}

效果图:

猜你喜欢

转载自blog.csdn.net/dyw_666666/article/details/82466894