矩陣加密論文
A. 怎樣用矩陣加密和解密一段英文
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//矩陣數據結構
//二維矩陣
class _Matrix
{
public int m;
public int n;
public float[] arr;
//初始化
public _Matrix()
{
m = 0;
n = 0;
}
public _Matrix(int mm,int nn)
{
m = mm;
n = nn;
}
//設置m
public void set_mn(int mm,int nn)
B. 矩陣在密碼學的運用問題
對密碼不熟,代數還可以,我的理解是這樣的,首先要將「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的逆矩陣。
C. 密碼學論文寫作論文
密碼學論文寫作範例論文
隨著網路空間競爭與對抗的日益尖銳復雜,安全問題以前所未有的深度與廣度向傳統領域延伸。隨著移動互聯網、下一代互聯網、物聯網、雲計算、命名數據網、大數據等為代表的新型網路形態及網路服務的興起,安全需求方式已經由通信雙方都是單用戶向至少有一方是多用戶的方式轉變。如果你想深入了解這方面的知識,可以看看以下密碼學論文。
題目:數學在密碼學中的應用淺析
摘要:密碼學作為一門交叉學科,涉及學科廣泛,其中應用數學占很大比例,其地位在密碼學中也越來越重要,本文簡單介紹密碼學中涉及數學理論和方法計算的各種演算法基本理論及應用,並將密碼學的發展史分為現代密碼學和傳統密碼學,列舉二者具有代表性的明文加密方法,並分別對其中一種方法進行加密思想的概括和闡述。
關鍵詞:密碼學 應用數學 應用
隨著信息時代的高速發展,信息的安全越來越重要,小到個人信息,大到國家安全。信息安全主要是將計算機系統和信息交流網路中的各種信息進行數學化的計算和處理,保護信息安全,而密碼學在其中正是處於完成這些功能的技術核心。在初期的學習當中,高等數學、線性代數、概率論等都是必須要學習的基礎學科,但是涉及密碼學的實際操作,數論和近世代數的'數學知識仍然會有不同程度的涉及和應用,本文在這一基礎上,討論密碼學中一些基本理論的應用。
一、密碼學的含義及特點
密碼學是由於保密通信所需從而發展起來的一門科學,其保密通訊的接受過程如下: 初始發送者將原始信息 ( 明文) 進行一定方式轉換 ( 加密) 然後發送,接受者收到加密信息,進行還原解讀 ( 脫密) ,完成保密傳輸信息的所有過程,但是由於傳輸過程是經由有線電或無線電進行信息傳輸,易被竊取者在信息傳輸過程中竊取加密信息,在演算法未知的情況下恢復信息原文,稱為破譯。
保密信息破譯的好壞程度取決於破譯者的技術及經驗和加密演算法的好壞。實際運用的保密通信由兩個重要方面構成: 第一是已知明文,對原始信息進行加密處理,達到安全傳輸性的效果; 第二是對截獲的加密信息進行信息破譯,獲取有用信息。二者分別稱為密碼編碼學和密碼分析學,二者互逆,互相反映,特性又有所差別。
密碼體制在密碼發展史上是指加密演算法和實現傳輸的設備,主要有五種典型密碼體制,分別為: 文學替換密碼體制、機械密碼體制、序列密碼體制、分組密碼體制、公開密鑰密碼體制,其中密碼學研究目前較為活躍的是上世紀70年代中期出現的公開密鑰密碼體制。
二、傳統密碼應用密碼體制
在1949年香農的《保密系統的通信理論》發表之前,密碼傳輸主要通過簡單置換和代換字元實現,這樣簡單的加密形式一般屬於傳統密碼的范疇。
置換密碼通過改變明文排列順序達到加密效果,而代換密碼則涉及模運算、模逆元、歐拉函數在仿射密碼當中的基本理論運用。
傳統密碼應用以仿射密碼和Hill密碼為代表,本文由於篇幅所限,就以運用線性代數思想對明文進行加密處理的Hill密碼為例,簡述其加密思想。
Hill密碼,即希爾密碼,在1929年由數學家Lester Hill在雜志《American Mathematical Monthly》
上發表文章首次提出,其基本的應用思想是運用線性代換將連續出現的n個明文字母替換為同等數目的密文字母,替換密鑰是變換矩陣,只需要對加密信息做一次同樣的逆變換即可。
三、現代密碼應用
香農在1949年發表的《保密系統的通信理論》上將密碼學的發展分為傳統密碼學與現代密碼學,這篇論文也標志著現代密碼學的興起。
香農在這篇論文中首次將資訊理論引入密碼學的研究當中,其中,概率統計和熵的概念對於信息源、密鑰源、傳輸的密文和密碼系統的安全性作出數學描述和定量分析,進而提出相關的密碼體制的應用模型。
他的論述成果為現代密碼學的發展及進行信息破譯的密碼分析學奠定理論基礎,現代的對稱密碼學以及公鑰密碼體制思想對於香農的這一理論和數論均有不同程度的涉及。
現代密碼應用的代表是以位元組處理為主的AES演算法、以歐拉函數為應用基礎的RSA公鑰演算法以及運用非確定性方案選擇隨機數進行數字簽名並驗證其有效性的El Gamal簽名體制,本文以AES演算法為例,簡述現代密碼應用的基本思想。
AES演算法的處理單位是計算機單位位元組,用128位輸入明文,然後輸入密鑰K將明文分為16位元組,整體操作進行十輪之後,第一輪到第九輪的輪函數一樣,包括位元組代換、行位移、列混合和輪密鑰加四個操作,最後一輪迭代不執行列混合。
而且值得一提的是在位元組代換中所運用到的S盒置換是運用近世代數的相關知識完成加密計算的。
四、結語
本文通過明確密碼學在不同發展階段的加密及運作情況,然後主要介紹密碼學中數學方法及理論,包括數論、概率論的應用理論。
隨著現代密碼學的活躍發展,數學基礎作為信息加密工具與密碼學聯系越來越密切,密碼學實際操作的各個步驟都與數學理論聯系甚密,數學密碼已經成為現代密碼學的主流學科。
當然,本文論述的數學理論與密碼學的應用還只是二者關系皮毛,也希望看到有關專家對這一問題作出更深層次的論述,以促進應用數學理論與密碼學發展之間更深層次的溝通與發展。
;D. 矩陣在現實生活中的應用
矩陣(數學術語)
在數學中,矩陣(Matrix)是一個按照長方陣列排列的復數或實數集合、 ,最早來自於方程組的系數及常數所構成的方陣。這一概念由19世紀英國數學家凱利首先提出。
定義
由 m × n 個數aij排成的m行n列的數表稱為m行n列的矩陣,簡稱m × n矩陣。記作:
這里表示的是一次線性變換再街上一個平移。
線性變換及對稱
線性變換及其所對應的對稱,在現代物理學中有著重要的角色。例如,在量子場論中,基本粒子是由狹義相對論的洛倫茲群所表示,具體來說,即它們在旋量群下的表現。內含泡利矩陣及更通用的狄拉克矩陣的具體表示,在費米子的物理描述中,是一項不可或缺的構成部分,而費米子的表現可以用旋量來表述。描述最輕的三種誇克時,需要用到一種內含特殊酉群SU(3)的群論表示;物理學家在計算時會用一種更簡便的矩陣表示,叫蓋爾曼矩陣,這種矩陣也被用作SU(3)規范群,而強核力的現代描述──量子色動力學的基礎正是SU(3)。還有卡比博-小林-益川矩陣(CKM矩陣):在弱相互作用中重要的基本誇克態,與指定粒子間不同質量的誇克態不一樣,但兩者卻是成線性關系,而CKM矩陣所表達的就是這一點。
量子態的線性組合
1925年海森堡提出第一個量子力學模型時,使用了無限維矩陣來表示理論中作用在量子態上的運算元。這種做法在矩陣力學中也能見到。例如密度矩陣就是用來刻畫量子系統中「純」量子態的線性組合表示的「混合」量子態。
另一種矩陣是用來描述構成實驗粒子物理基石的散射實驗的重要工具。當粒子在加速器中發生碰撞,原本沒有相互作用的粒子在高速運動中進入其它粒子的作用區,動量改變,形成一系列新的粒子。這種碰撞可以解釋為結果粒子狀態和入射粒子狀態線性組合的標量積。其中的線性組合可以表達為一個矩陣,稱為S矩陣,其中記錄了所有可能的粒子間相互作用。
簡正模式
矩陣在物理學中的另一類泛應用是描述線性耦合調和系統。這類系統的運動方程可以用矩陣的形式來表示,即用一個質量矩陣乘以一個廣義速度來給出運動項,用力矩陣乘以位移向量來刻畫相互作用。求系統的解的最優方法是將矩陣的特徵向量求出(通過對角化等方式),稱為系統的簡正模式。這種求解方式在研究分子內部動力學模式時十分重要:系統內部由化學鍵結合的原子的振動可以表示成簡正振動模式的疊加[31] 。描述力學振動或電路振盪時,也需要使用簡正模式求解。
幾何光學
在幾何光學里,可以找到很多需要用到矩陣的地方。幾何光學是一種忽略了光波波動性的近似理論,這理論的模型將光線視為幾何射線。採用近軸近似(英語:paraxial approximation),假若光線與光軸之間的夾角很小,則透鏡或反射元件對於光線的作用,可以表達為2×2矩陣與向量的乘積。這向量的兩個分量是光線的幾何性質(光線的斜率、光線跟光軸之間在主平面(英語:principal plane)的垂直距離)。這矩陣稱為光線傳輸矩陣(英語:ray transfer matrix),內中元素編碼了光學元件的性質。對於折射,這矩陣又細分為兩種:「折射矩陣」與「平移矩陣」。折射矩陣描述光線遇到透鏡的折射行為。平移矩陣描述光線從一個主平面傳播到另一個主平面的平移行為。
由一系列透鏡或反射元件組成的光學系統,可以很簡單地以對應的矩陣組合來描述其光線傳播路徑。
電子學
在電子學里,傳統的網目分析(英語:mesh analysis)或節點分析會獲得一個線性方程組,這可以以矩陣來表示與計算。
E. 置換密鑰矩陣加密演算法實現與安全性分析
#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 ];
}
F. 矩陣加密和解密
去看看矩陣的乘法運算,就清楚了。很簡單的乘法運算
G. 求個矩陣加密演算法的程序
暈,我原號登陸竟然沒有回答框~~!!
是不是樓主對我 (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[ YYSYd 11.16 G鶪?GQ KKDKU 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`E3QK3K2*CR7T9.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?" E25?%%.:xS#.\=&2gE7# (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
-------------------------------------