c语言怎么编写hill密码?

如题所述

// 希尔加密与解密算法\x0d\x0a#include \x0d\x0aint main(void)\x0d\x0a{\x0d\x0a int i, temp, row, column;\x0d\x0a // matrix存放加密或解密矩阵,Password为加密后的结果\x0d\x0a // OText存放原文转换为普通数字,如A~1,Z~26\x0d\x0a int matrix[10][10], ConMatrix[10][10], OText[MAXN], Password[MAXN], OriText[MAXN];\x0d\x0a char text[MAXN];\x0d\x0a char sel; printf("=================================================\n");\x0d\x0a putchar('\n');\x0d\x0a printf(" SHELL加密解密器\n");\x0d\x0a putchar('\n');\x0d\x0a printf("=================================================\n"); while (1)\x0d\x0a {\x0d\x0a // 初始化矩阵\x0d\x0a for (row = 0; row < 10; row++)\x0d\x0a for (column = 0; column < 10; column++)\x0d\x0a matrix[row][column] = 0; putchar('\n');\x0d\x0a printf("1.加密\n");\x0d\x0a printf("2.解密\n");\x0d\x0a printf("0.退出\n");\x0d\x0a printf("请输入你的选择:\n");\x0d\x0a sel = getche(); switch (sel)\x0d\x0a {\x0d\x0a case '1':\x0d\x0a printf("\n请输入原文:\n");\x0d\x0a memset(text, '\0', sizeof(text) / sizeof(char));\x0d\x0a memset(Password, 0, sizeof(Password) / sizeof(int));\x0d\x0a gets(text); printf("输入加密矩阵的维数,维数不能超过10维:\n");\x0d\x0a scanf("%d", &nDime);\x0d\x0a printf("输入矩阵,该矩阵必须为可逆矩阵,否则将不能进行解密:\n");\x0d\x0a // 可逆矩阵即,设A为n阶矩阵,如果存n在阶矩阵B使得AB=BA=1\x0d\x0a // 则矩阵A是可逆的,称B是A的逆矩阵\x0d\x0a for (row = 0; row < nDime; row++)\x0d\x0a for (column = 0; column < nDime; column++)\x0d\x0a scanf("%d", &matrix[row][column]);\x0d\x0a // 将小写字母转换为大写字母\x0d\x0a for (i = 0; text[i] != '\0'; i++)\x0d\x0a if (islower(text[i]))\x0d\x0a text[i] |= 0x20;\x0d\x0a // OText存放将字母转换为相应数,如A~1,Z~26\x0d\x0a for (i = 0; i < MAXN; i++)\x0d\x0a OText[i] = 0;\x0d\x0a for (i = 0; text[i] != '\0'; i++)\x0d\x0a OText[i] = text[i] - 'A' + 1;\x0d\x0a // 加密\x0d\x0a ShellPassword(OText, strlen(text), matrix, Password);\x0d\x0a // 将加密后的内容打印出来\x0d\x0a printf("加密后的内容为:\n");\x0d\x0a for (i = 0; i < strlen(text); i++)\x0d\x0a printf("%d ", Password[i]);\x0d\x0a putchar('\n');\x0d\x0a break;\x0d\x0a case '2':\x0d\x0a break;\x0d\x0a case '0':\x0d\x0a return 0;\x0d\x0a default:\x0d\x0a break;\x0d\x0a }\x0d\x0a getchar();\x0d\x0a } return 0;\x0d\x0a}
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜