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

📄 vigenere.c

📁 Caesar体制
💻 C
字号:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
main()
{
    char m[200],s[200],c[200];
    int a,b,n,r;
    int i,k;
    char v[26][26];


    for(i=0;i<26;i++)
        for(k=0;k<26;k++)
                v[i][k]=65+(k+i)%26;    /*生成Vigener矩阵*/

    printf("*****Vigener体制*****\n");
    printf("请选择:若要加密,请输入1;若要解密,请输入0\n");
    scanf("%d",&n);

    if(n==1)     /*加密部分*/
    {
        printf("*****用Vigenere体制加密*****\n");
        printf("请输入明文:");
        scanf("%s",m);
        printf("请输入秘钥:");
        scanf("%s",s);

        a=strlen(m);
        b=strlen(s);

        for(i=0;i<a;i++)
        {
            if(m[i]>=65 && m[i]<=90)
                m[i]=m[i]+32;    /*将明文中的大写转化为小写*/
            if(isupper(s[i]))
                s[i]=s[i]+32;    /*将密钥中的大写转化为小写*/
            c[i]=v[m[i]-97][s[i%b]-97];
        }                              /*加密*/

        printf("密文为:");
        printf("%s",c);
    }

    if(n==0)          /*解密部分*/
    {
        printf("*****用Vigenere体制解密*****\n");
        printf("请输入密文:\n");
        scanf("%s",c);
        printf("请输入密钥:\n");
        scanf("%s",s);

        a=strlen(c);
        b=strlen(s);
        for(i=0;i<a;i++)
        {
           if(c[i]>=97 && c[i]<=122)
                c[i]=c[i]-32;        /*将密文中的小写转化为大写*/
            if(isupper(s[i]))        /*将密钥中的大写转化为小写*/
                s[i]=s[i]+32;
            r=(c[i]-65)-(s[i%b]-97);
            if(r<0)
               r=26+r;
            m[i]=v[0][r];
        }                      /*解密*/
        printf("明文为:");
        printf("%s",m);
    }

    if(n!=1 && n!=0)
    printf("输入错误!\n");

    getch();
}

⌨️ 快捷键说明

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