导航:首页 > 文档加密 > 矩阵信息加密

矩阵信息加密

发布时间:2023-01-27 16:03:44

㈠ 置换密钥矩阵加密算法实现与安全性分析

#include<iostream.h>
class SubKey{ //定义子密钥为一个类
public:
int key[8][6];
}subkey[16]; //定义子密钥对象数组

class DES{
int encipher_decipher; //判断加密还是解密
int key_in[8][8]; //用户原始输入的64位二进制数
int key_out[8][7]; //除去每行的最后一位校验位
int c0_d0[8][7]; //存储经PC-1转换后的56位数据
int c0[4][7],d0[4][7]; //分别存储c0,d0
int text[8][8]; //64位明文
int text_ip[8][8]; //经IP转换过后的明文
int A[4][8],B[4][8]; //A,B分别存储经IP转换过后明文的两部分,便于交换
int temp[8][6]; //存储经扩展置换后的48位二进制值
int temp1[8][6]; //存储和子密钥异或后的结果
int s_result[8][4]; //存储经S变换后的32位值
int text_p[8][4]; //经P置换后的32位结果
int secret_ip[8][8]; //经逆IP转换后的密文
public:
void Key_Putting();
void PC_1();
int function(int,int); //异或
void SubKey_Proction();
void IP_Convert();
void f();
void _IP_Convert();
void Out_secret();
};
void DES::Key_Putting() //得到密钥中对算法有用的56位
{
cout<<"请输入64位的密钥(8行8列且每行都得有奇数个1):\n";
for(int i=0;i<8;i++)
for(int j=0;j<8;j++){
cin>>key_in[i][j];
if(j!=7) key_out[i][j]=key_in[i][j];
}
}
void DES::PC_1() //PC-1置换函数
{
int pc_1[8][7]={ //PC-1
,
,
,
,
,
,
,

};
int i,j;
for(i=0;i<8;i++)
for(j=0;j<7;j++)
c0_d0[i][j]=key_out[ (pc_1[i][j]-1)/8 ][ (pc_1[i][j]-1)%8 ];
}
int DES::function(int a,int b) //模拟二进制数的异或运算,a和b为整型的0和1,返回值为整型的0或1
{
if(a!=b)return 1;
else return 0;
}
void DES::SubKey_Proction() //生成子密钥
{
int move[16][2]={ //循环左移的位数
1 , 1 , 2 , 1 ,
3 , 2 , 4 , 2 ,
5 , 2 , 6 , 2 ,
7 , 2 , 8 , 2 ,
9 , 1, 10 , 2,
11 , 2, 12 , 2,
13 , 2, 14 , 2,
15 , 2, 16 , 1
};
int pc_2[8][6]={ //PC-2
14, 17 ,11 ,24 , 1 , 5,
3 ,28 ,15 , 6 ,21 ,10,
23, 19, 12, 4, 26, 8,
16, 7, 27, 20 ,13 , 2,
41, 52, 31, 37, 47, 55,
30, 40, 51, 45, 33, 48,
44, 49, 39, 56, 34, 53,
46, 42, 50, 36, 29, 32
};
for(int i=0;i<16;i++) //生成子密钥
{
int j,k;
int a[2],b[2];
int bb[28],cc[28];
for(j=0;j<4;j++)
for(k=0;k<7;k++)
c0[j][k]=c0_d0[j][k];
for(j=4;j<8;j++)
for(k=0;k<7;k++)
d0[j-4][k]=c0_d0[j][k];
for(j=0;j<4;j++)
for(k=0;k<7;k++){
bb[7*j+k]=c0[j][k];
cc[7*j+k]=d0[j][k];
}
for(j=0;j<move[i][1];j++){
a[j]=bb[j];
b[j]=cc[j];
}
for(j=0;j<28-move[i][1];j++){
bb[j]=bb[j+1];
cc[j]=cc[j+1];
}
for(j=0;j<move[i][1];j++){
bb[27-j]=a[j];
cc[27-j]=b[j];
}
for(j=0;j<28;j++){
c0[j/7][j%7]=bb[j];
d0[j/7][j%7]=cc[j];
}
for(j=0;j<4;j++) //L123--L128是把c0,d0合并成c0_d0
for(k=0;k<7;k++)
c0_d0[j][k]=c0[j][k];
for(j=4;j<8;j++)
for(k=0;k<7;k++)
c0_d0[j][k]=d0[j-4][k];
for(j=0;j<8;j++) //对Ci,Di进行PC-2置换
for(k=0;k<6;k++)
subkey[i].key[j][k]=c0_d0[ (pc_2[j][k]-1)/7 ][ (pc_2[j][k]-1)%7 ];
}
}
void DES::IP_Convert()
{
int IP[8][8]={ //初始置换IP矩阵
58, 50, 42, 34, 26, 18, 10, 2,
60, 52, 44, 36, 28, 20, 12, 4,
62, 54, 46, 38, 30, 22, 14, 6,
64, 56, 48, 40, 32, 24, 16, 8,
57, 49, 41, 33, 25, 17, 9, 1,
59, 51, 43, 35, 27, 19, 11, 3,
61, 53, 45, 37, 29, 21, 13, 5,
63, 55, 47, 39, 31, 23, 15, 7
};
cout<<"你好,你要加密还是解密?加密请按1号键(输入1),解密请按2号键,并确定."<<'\n';
cin>>encipher_decipher;
char * s;
if(encipher_decipher==1) s="明文";
else s="密文";
cout<<"请输入64位"<<s<<"(二进制):\n";
int i,j;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
cin>>text[i][j];
for(i=0;i<8;i++) //进行IP变换
for(j=0;j<8;j++)
text_ip[i][j]=text[ (IP[i][j]-1)/8 ][ (IP[i][j]-1)%8 ];
}

㈡ 凯撒密码原理及在矩阵中的应用

《高卢战记》有描述恺撒曾经使用密码来传递信息,即所谓的“恺撒密码”,它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。因据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。这是一种简单的加密方法,这种密码的密度是很低的,只需简单地统计字频就可以破译。现今又叫“移位密码”,只不过移动的位数不一定是3位而已。

㈢ 某人向公司发送信息矩阵B,通过公司的加密矩阵A,公司收到的信息矩阵为C(C=AB).C=

因为C=AB,所以C的列向量组可以由A的列向量组线性表示.
又B可逆,所以A=C把矩阵A=CB<sup>-1</sup>.
从而A的列向量组也可以由C的列向量组线性表示.
因此,C的列向量组与C的列向量组是等价的.
故选:B.

㈣ 常用的加密算法有哪些

对称密钥加密

对称密钥加密 Symmetric Key Algorithm 又称为对称加密、私钥加密、共享密钥加密:这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单的相互推算的密钥,对称加密的速度一般都很快。

㈤ 求个矩阵加密算法的程序

晕,我原号登陆竟然没有回答框~~!!

是不是楼主对我 (1西方不胜1) 做了限制? 那我也只能回答一部分...

把 生成满秩矩阵以及其逆矩阵 的代码贴上来....

#include "stdio.h"
#include "time.h"
#include "stdlib.h"
#define MAX 8 // 矩阵大小
#define PT 10 // 附矩阵 随机初始值的最大值
#define bianhuan 100 // 由对角线矩阵生成满秩矩阵所需的行变化次数

struct changs // 记录变化的过程, 以便逆过来求其逆矩阵
{
int temp1 ;
int temp2 ;
} change[bianhuan + 1 ] ;

int Matrix[MAX][MAX] ; // 满秩矩阵
int R_matrix[MAX][MAX]; // 逆矩阵

// ***** 生成 满秩矩阵 并求出该满秩矩阵的逆矩阵 ****************************//
void creat()
{
int i , k ;
int flage = 0 ;

for(i = 0 ; i < MAX ; i ++ ) // 生成主对角线矩阵
Matrix[i][i] = R_matrix[i][i] = 1 ;

for(k = 0 ; k < bianhuan ; k ++ ) // 进行 行 随意变化生成满秩矩阵 , 并记录下变化过程
{
int x1 = change[k].temp1 = rand() % MAX ;

int x2 = rand() % MAX ;
while( x2 == x1 ) x2 = rand() % MAX ;

change[k].temp2 = x2 ;
for(i = 0 ; i < MAX ; i ++ )
if( Matrix[x1][i] + Matrix[x2][i] >= 31 ) break ; // 控制矩阵中最大的数的范围在30内

if(i >= MAX )
{
for(i = 0 ; i < MAX ; i ++ )
Matrix[x1][i] += Matrix[x2][i] ;
}
else k-- ,flage ++ ;

if(flage > 2000 ) { k++ ; break ; }
}
for(k-- ; k >= 0 ; k -- ) // 行逆变换, 求出其逆矩阵
{
for( i = 0 ; i < MAX ; i ++ )
R_matrix[ change[k].temp1 ][i] -= R_matrix[ change[k].temp2 ][i] ;

}
return ;
}

int main()
{
int i , j ;
srand(time(0)) ;

creat() ;

printf("加密矩阵为:\n") ;
for(i =0 ; i < MAX ; i ++ )
{
for(j =0 ; j < MAX ; j ++)
printf("%4d " , Matrix[i][j]) ;
printf("\n") ;
}

printf("\n") ;
printf("解密矩阵为:\n") ;
for( i = 0; i < MAX ; i ++ )
{
for(j =0 ; j < MAX ; j ++ )
printf("%4d ",R_matrix[i][j]) ;
printf("\n");
}
return 0 ;
}

如下:是一个测试数据.

加密矩阵为:
14 8 29 30 10 2 14 13
11 8 23 25 6 1 10 8
12 8 26 27 7 3 11 9
7 5 15 15 3 1 5 4
9 6 19 21 7 1 10 9
10 6 21 22 7 2 10 9
8 6 17 18 3 1 6 4
7 6 15 19 5 1 9 7

解密矩阵为:
-2 5 -1 -2 -3 5 -2 -1
-1 5 2 -1 -1 -1 -4 -1
2 -1 2 0 1 -5 0 0
-1 -4 -3 2 1 4 3 1
-3 2 0 -2 2 3 0 -2
-1 1 0 0 -1 2 -1 0
2 4 4 -4 -1 -6 -2 -1
1 -3 -2 4 -1 1 0 2

被加密文件:
=====================================
发往: 刘晓辉 (ACM基地/QT002)
时间: 2007-06-11 星期一 18:58:40 (RSA)(封装)
(文件) player.swf
-------------------------------------

加密后文件:
x xxxx \ \\\\ g gggg 7 7777 R RRRR W WWWW ? ???? E EEEE x xxxx \ \\\\ g gggg 7 7777 R RRRR W WWWW ? ???? E EEEE x xxxx \ \\\\ g gggg 7 7777 R RRRR W WWWW ? ???? E EEEE x xxxx \ \\\\ g gggg 7 7777 R RRRR W WWWW ? ???? E EEEE hh]hv
Q QJQ[ Y YSYd 11.16 G䴗?GQ K KDKU 8858> ;;5;D B9#PIaBP2,@:K2=90F@S9E'#-%-'72B-60):5F0:"-)4"*&!/+7&-%$8-3>H3*!*25*/$.6=. %"+0"( %-4%#$%'?5>nJ6Q1'2V8,C8,6`>1I?4"**$+K2&7.&-P5(;# #<&1" %@(#/+(
J1X!"9%B%& A(I#'? 2"< 6#?(, *14)@x+2\ . 8g  7%-R &/W�???"
(ER2L]>'<JE+AS% #. 8"5?;$7D*?)5�.
.5 ^A`E3QK 3K2*CR 7T9.I.-*@ .B0"7D?F2%;5"4 16)9)/*,3hk
$)QT #'-Y^ 13 #GI ? %KN 8; ;> K(;3T&':0#?@!5'H"#&
3(#96+$=( #+*"/?/
` "I  ' Q?,? A ?" E  2 5?%%.:xS #.\=  &2gE 7#  (R9 ?!*W<? ?(#E0V]K%IvS BJ9;[A IS>AdH '. %6( ;?51Q8 >D65U< -5%+>. 25.)D. x xx x \ \\ \ g gg g 7 77 7 R RR R W WW W ? ?? ? E EE E x xx x \ \\ \ g gg g 7 77 7 R RR R W WW W ? ?? ? E EE E x xx x \ \\ \ g gg g 7 77 7 R RR R W WW W ? ?? ? E EE E x xx x \ \\ \ g gg g 7 77 7 R RR R W WW W ? ?? ? E EE E P(Px P ==\ = E"Eg E %%7 % 66R 6 ::W : **? * --E -

解密后文件:

=====================================
发往: 刘晓辉 (ACM基地/QT002)
时间: 2007-06-11 星期一 18:58:40 (RSA)(封装)
(文件) player.swf
-------------------------------------

㈥ 矩阵在密码学的运用问题

对密码不熟,代数还可以,我的理解是这样的,首先要将“ALGEBRA”转换为向量c=(1 12 7 5 2 18 1 9 3)。
设A为一个可逆矩阵,与传递的信息大小要相同,这里就是9×9,
则可以c*A或者A*transpose(c)(transpose表示c的转置向量,*为乘法),得到一个行或者列向量。
把得出的行或者列向量作为加密后的信息发出,解密者若知道这一个矩阵A,
如果用的是行向量,则需右乘A的逆矩阵即可得到原来的向量c,再对应到字母A……Z,就为传递的信息;列向量的话就需要左乘矩阵A的逆矩阵。

㈦ 矩阵加密和解密

去看看矩阵的乘法运算,就清楚了。很简单的乘法运算

㈧ 矩阵的实际应用都有哪些

1、矩阵在经济生活中的应用

矩阵就是在行列式的基础上演变而来的,可活用行列式求花费总和最少等类似的问题;可借用特征值和特征向量预测若干年后的污水水平等问题;也可利用矩阵的方法求线性规划问题中的最优解,求解企业生产哪一种类型的产品,获得的利润最大。

2、在人口流动问题方面的应用

这是矩阵高次幂的应用,比如预测未来的人口数量、人口的发展趋势等。

3、矩阵在密码学中的应用

可用可逆矩阵及其逆矩阵对需发送的秘密消息加密和译密。

4、矩阵在文献管理中的应用

在现代搜索中往往包括几百个文件和成千的关键词,但可以利用矩阵和向量的稀疏性,节省计算机的存储空间和搜索时间。

矩阵图法的用途十分广泛,在质量管理中,常用矩阵图法解决以下问题:

1、把系列产品的硬件功能和软件功能相对应,并要从中找出研制新产品或改进老产品的切入点;

2、明确应保证的产品质量特性及其与管理机构或保证部门的关系,使质量保证体制更可靠;

3、明确产品的质量特性与试验测定项目、试验测定仪器之间的关系,力求强化质量评价体制或使之提高效率;

4、当生产工序中存在多种不良现象,且它们具有若干个共同的原因时,希望搞清这些不良现象及其产生原因的相互关系,进而把这些不良现象一举消除。

㈨ 信息矩阵的信息矩阵技术特性

信息矩阵可作为企业申明产品真伪的隐藏手段和最终解释依据,专用于企业在不开启包装的情况下,验证某件产品是否为本企业出品的最后一道屏障。因信息矩阵的隐形特性及其在印刷、识读方面的技术壁垒,以及可在有限的图文区域内存储海量数据信息的特性,采用信息矩阵作为防伪标签印刷手段,是一种行之有效的保护企业品牌和消费者合法权益的手段。
但是,某些与信息矩阵类似的技术,由于编码方式公开化和印刷技术普及化,他们并不具备真正的防伪特性,只有专用的、不能被社会上其他企业或组织破解和反编译的、具有独占特性的信息矩阵,才能够有效保证标签的防伪功能。 因信息矩阵具备隐形的、加密的编码体系,它也可像一维条码、二维码、数字密码一样,在物流管控领域中得到良好的应用,而且,作为隐形的(数字加密信息肉眼不可见)、全息的(局部带有全局信息内容)、带有印刷门槛的技术,信息矩阵与识读器的结合,不仅能够提供与条码相同的物流管控功能,还能做到隐蔽地实现物流功能,而不会被恶意破坏。
在物流管控应用中所采用的识读设备一般为联机式,因而可以实现同计算机或通讯设备进行实时沟通,从而为企业稽查部门进行防窜货工作提供了十分便利的手段,进而提高了溯源取证的工作效率。 信息矩阵还可被应用于某些特殊印刷品,在不影响外观的情况下,为阅读者提供远远多于图文信息的动态信息内容,并可实现与印刷品的交互。
传统的应用方式为书本发声,多用于企业宣传、收藏品、带有大量音频信息的小册子等方面,而随着联机式和联网式识读器的不断出现,信息矩阵已经广泛应用于与印刷品的互动,并通过网络即时更新数据信息。
目前较为常见的应用包括股票信息实施查询、餐饮行业的自动点菜菜谱、智能家居控制等等。 信息矩阵作为一种光学识别技术、还被应用于物联网领域,并作为一种接触式或短距非接触式感应标签,被应用于物联网行业的某些具体领域。

阅读全文

与矩阵信息加密相关的资料

热点内容
四川虚拟主机云服务器 浏览:779
母乳喂养真人版电影 浏览:396
免费看片链接 浏览:492
编程将中断类型号 浏览:597
数字编程学院 浏览:95
程序员不时尚 浏览:746
不付费看网站 浏览:230
《代人受过》训诫文 浏览:258
1n.d5h49m6. 浏览:687
linuxweb目录权限 浏览:945
WWW 5a5e 浏览:544
id3v2java 浏览:222
怎么打开mysql命令行 浏览:522
linux文件星号 浏览:632
小城与小妈去北京旅游叫什么小说 浏览:230
pdf阅读器推荐 浏览:81
能免费看英语电影的软件 浏览:126
有部电影女主半夜出去卖淫 浏览:628
西门子编程试题 浏览:82
android转动360 浏览:334