C语言Vigenere解密
备注:输入密码(大写)以及密钥(小写),得到明文(小写)。
#include<stdio.h>
#include<stdlib.h>
int main() {
int i_1 = 0, j_1 = 0, j_2 = 0, k = 0, len_c = 0, len_s = 0, i_2 = 0, i_3 = 0;
int temp_1 = 0, temp_2 = 0;
char A[26] = { 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' };
char B[26][26] = { '\0' };
char data[100] = { '\0' };
char shelter[100] = { '\0' };
char code[100] = { '\0' };
for (i_1 = 0; i_1 < 26; i_1++) {
for (j_1 = 0; j_1 < 26; j_1++)
B[i_1][j_1] = A[(j_1 + i_1) % 26];
}
printf("Input the code:\n");
gets_s(code);
printf("Then input the shelter:\n");
gets_s(shelter);
for (len_c = 0; code[len_c] != '\0'; len_c++);
for (len_s = 0; shelter[len_s] != '\0'; len_s++);
if (len_c > len_s) {
for (k = 1; k * len_s < len_c; k++)
for (i_2 = 0; i_2 < len_s; i_2++)
shelter[k * len_s + i_2] = shelter[i_2];
}
for (i_3 = 0; i_3 < len_c; i_3++) {
temp_2 = int(shelter[i_3]) - 97;
for (j_2=0;j_2<26;j_2++)
if (B[j_2][temp_2] == code[i_3]+32)
data[i_3] = A[j_2];
putchar(data[i_3]);
}
return 0;
}