宁波网站制作出售,东高端莞商城网站建设,可在哪些网站做链接,阿里云简单网站建设这里写目录标题 移位密码概述代码 希尔密码( Z 256 Z_{256} Z256)待加密长度被3整除待加密长度不一定被3整除加解密文件 移位密码
概述 以 z 26 运算为例 , k 为密钥 加密#xff1a; e k ( x ) ( x k ) m o d 26 解密#xff1a; d k ( x ) ( x − k ) m o d 26 以z_{… 这里写目录标题 移位密码概述代码 希尔密码( Z 256 Z_{256} Z256)待加密长度被3整除待加密长度不一定被3整除加解密文件 移位密码
概述 以 z 26 运算为例 , k 为密钥 加密 e k ( x ) ( x k ) m o d 26 解密 d k ( x ) ( x − k ) m o d 26 以z_{26} 运算为例,k为密钥 \\加密e_k(x)(xk) mod 26 \\解密d_k(x)(x-k) mod 26 以z26运算为例,k为密钥加密ek(x)(xk)mod26解密dk(x)(x−k)mod26 实际中我们使用 Z 256 Z_{256} Z256运算群的加法运算
代码
#include iostream
#include fstream
#includecstringusing namespace std;int main(){//加密写入ofstream fileOut;char helloTxt[]{9*((#$)((%#^^hello,world!\n123456789};int txtLen{strlen(helloTxt)};fileOut.open(hello.data,ios::binary);int k77;for(int i0;itxtLen;i){fileOutchar((helloTxt[i]k) %256);}fileOut.close();//解密读出ifstream fileIn;char helloChar;fileIn.open(hello.data,ios::binary);while (fileIn.get(helloChar)){coutchar((helloChar-k) %256);}fileIn.close();}9*((#$)((%#^^hello,world!
123456789
Process returned 0 (0x0) execution time : 0.120 s
Press any key to continue.
希尔密码( Z 256 Z_{256} Z256)
待加密长度被3整除
#include iostream
#include fstream
#includecstring
#include e:/eigen/Eigen/Denseusing namespace std;
using namespace Eigen;int main(){//加密写入ofstream fileOut;char helloTxt[]{123456789$#%(Yoiu9};int txtLen{strlen(helloTxt)};fileOut.open(hello.data,ios::binary);for(int i0;itxtLen;i3){Matrixint,1,3 x{helloTxt[i],helloTxt[i1],helloTxt[i2]};Matrixint,3,3 k{{16,91,215}, {171,253,50}, {8,186,121}};Matrixint,1,3 e_datax*k;for (int j0;j3;j){fileOutchar(int(e_data[j]) % 256);}}fileOut.close();//解密读出ifstream fileIn;char helloChar;fileIn.open(hello.data,ios::binary);char txtBuffer[4];for(int i0;itxtLen;i3){fileIn.read(txtBuffer,3);Matrixint,1,3 y{txtBuffer[0],txtBuffer[1],txtBuffer[2]};Matrixint,3,3 k_ni{{9,11, 227},{101 ,152 ,37},{134 ,248 ,127}};Matrixint,1,3 e_datay*k_ni;for (int j0;j3;j){coutchar(int(e_data[j]) % 256);}}fileIn.close();}
待加密长度不一定被3整除
继续完善程序针对加密长度不一定是3的倍数。
#include iostream
#include fstream
#includecstring
#include e:/eigen/Eigen/Denseusing namespace std;
using namespace Eigen;int main(){//加密写入ofstream fileOut;char helloTxt[]{123456789p};int txtLen{strlen(helloTxt)};fileOut.open(hello.data,ios::binary);for(int i0;itxtLen;i3){if ((txtLen-i)1){Matrixint,1,3 x{helloTxt[i],0,0};Matrixint,3,3 k{{16,91,215}, {171,253,50}, {8,186,121}};Matrixint,1,3 e_datax*k;for (int j0;j3;j){fileOutchar(int(e_data[j]) % 256);}}else if ((txtLen-i)2){Matrixint,1,3 x{helloTxt[i],helloTxt[i1],0};Matrixint,3,3 k{{16,91,215}, {171,253,50}, {8,186,121}};Matrixint,1,3 e_datax*k;for (int j0;j3;j){fileOutchar(int(e_data[j]) % 256);}}else{Matrixint,1,3 x{helloTxt[i],helloTxt[i1],helloTxt[i2]};Matrixint,3,3 k{{16,91,215}, {171,253,50}, {8,186,121}};Matrixint,1,3 e_datax*k;for (int j0;j3;j){fileOutchar(int(e_data[j]) % 256);}}}fileOut.close();//解密读出ifstream fileIn;char helloChar;fileIn.open(hello.data,ios::binary);char txtBuffer[4];for(int i0;itxtLen;i3){fileIn.read(txtBuffer,3);Matrixint,1,3 y{txtBuffer[0],txtBuffer[1],txtBuffer[2]};Matrixint,3,3 k_ni{{9,11, 227},{101 ,152 ,37},{134 ,248 ,127}};Matrixint,1,3 e_datay*k_ni;char d_data[3];for (int j0;j3;j){d_data[j]char(int(e_data[j]) % 256);}if ((txtLen-i)2 ){coutd_data[0]d_data[1];}else if((txtLen-i)1 ){coutd_data[0];}else{for (int j0;j3;j){coutd_data[j];}}}fileIn.close();}123456789p
Process returned 0 (0x0) execution time : 0.376 s
Press any key to continue.加解密文件
#include iostream
#include fstream
#includecstring
#include e:/eigen/Eigen/Denseusing namespace std;
using namespace Eigen;int main(){//加密写入ifstream picfs(test.png, ios::ate|ios::binary);// 获取文件大小std::streampos picSize picfs.tellg();picfs.close(); // 关闭文件std::cout 文件长度: picSize 字节 std::endl;ifstream ifs(test.png, ios::in|ios::binary);char *picDatanew char[picSize1];for (int i0;ipicSize;i){ifs.get(picData[i]);}ifs.close();int txtLen{picSize};ofstream fileOut;fileOut.open(pic.dat,ios::binary);for(int i0;itxtLen;i3){if ((txtLen-i)1){Matrixint,1,3 x{picData[i],0,0};Matrixint,3,3 k{{16,91,215}, {171,253,50}, {8,186,121}};Matrixint,1,3 e_datax*k;for (int j0;j3;j){fileOutchar(int(e_data[j]) % 256);}}else if ((txtLen-i)2){Matrixint,1,3 x{picData[i],picData[i1],0};Matrixint,3,3 k{{16,91,215}, {171,253,50}, {8,186,121}};Matrixint,1,3 e_datax*k;for (int j0;j3;j){fileOutchar(int(e_data[j]) % 256);}}else{Matrixint,1,3 x{picData[i],picData[i1],picData[i2]};Matrixint,3,3 k{{16,91,215}, {171,253,50}, {8,186,121}};Matrixint,1,3 e_datax*k;for (int j0;j3;j){fileOutchar(int(e_data[j]) % 256);}}}fileOut.close();//解密读出ofstream deFileOut;deFileOut.open(test_d.png,ios::binary);ifstream fileIn;char helloChar;fileIn.open(pic.dat,ios::binary);char txtBuffer[4];for(int i0;itxtLen;i3){fileIn.read(txtBuffer,3);Matrixint,1,3 y{txtBuffer[0],txtBuffer[1],txtBuffer[2]};Matrixint,3,3 k_ni{{9,11, 227},{101 ,152 ,37},{134 ,248 ,127}};Matrixint,1,3 e_datay*k_ni;char d_data[3];for (int j0;j3;j){d_data[j]char(int(e_data[j]) % 256);}if ((txtLen-i)2 ){deFileOutd_data[0]d_data[1];}else if((txtLen-i)1 ){deFileOutd_data[0];}else{for (int j0;j3;j){deFileOutd_data[j];}}}deFileOut.close();fileIn.close();delete[] picData;}