我把加密与译码的原代码放在这里 注意:加密已成功,译码还还存在问题,问题应该出在求逆向矩阵上,我也不想做了,有意者拿去做一下吧。 // 希尔算法的加密与解密 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <conio.h> #include <ctype.h> #include <memory.h> // nDime为全部变量,可逆矩阵的维数 int nDime = 3; int index = 0; // MAXN为明文的最大长度 const int MAXN = 256; // 矩阵相乘,a是一个列为1的矩阵 void MultiplyMatrix(int a[], int b[][10], int *text) { int i, j, t; for (i = 0; i < nDime; i++) { t = 0; for (j = 0;j < nDime; j++) t += b[i][j] * a[j]; text[index++] = t; } } // 求行列式的值 int determinant(int a[][10], int size) { int i, j, m, n, s, t, k = 1; int f = 1, c,x, sn; for (i = 0, j = 0; i < size && j < size; i++, j++) { if (!a[i][j]) { for (m = i; !a[m][j]; m++) { if (m == size) { sn = 0; return sn; } else { for (n = j; n < size; n++) { c = a[i][n]; a[i][n] = a[m][n]; a[m][n] = c; } } } k *= -1; } for (s = size - 1; s > i; s--) { x = a[s][j]; for (t = j; t < size; t++) a[s