當前位置:首頁 » 編程軟體 » 用逆矩陣進行密碼的編譯

用逆矩陣進行密碼的編譯

發布時間: 2022-08-02 12:49:09

1. 求個矩陣加密演算法的程序

暈,我原號登陸竟然沒有回答框~~!!

是不是樓主對我 (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
-------------------------------------

2. 矩陣在密碼學的運用問題

對密碼不熟,代數還可以,我的理解是這樣的,首先要將「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的逆矩陣。

3. 多表代換密碼中逆矩陣怎麼求,在線等

貌似你這里的計算
表示一般的逆矩陣計算吧?
前後兩個相乘
很顯然不是等於單位矩陣E的
這里是密碼計算
肯定是有其特別的規定和計算方法
代入進行逆矩陣就是解密

4. MATLAB關於密碼問題(用MATLAB編程

clear all
clc
D=['STUDY AND ONCE MORE STUDY']
W=abs(D)
n=1;
for i=1:5;
for j=1:5
A(j,i)=W(n);
n=n+1;
end
end
A
Q=[1 2 8 3 2;2 4 5 2 9;9 7 3 1 5;8 3 1 5 7;3 2 5 7 1]
B=Q*A
Y=char(B)
最後由於加密後矩陣B中數值貌似都超出了ASCII范圍,出現的最後結果Y不太對!
其實我覺得應該是Y是一堆字母(密文),其實我看過其他的加密方式,很多最後會對Y裡面的數值比上一個數求余數!

5. 想聽大家對於一道密碼設計的數學建模題

公鑰密碼又稱為雙鑰密碼和非對稱密碼,是1976年由Daffy和Hellman在其「密碼學新方向」一文中提出的,見劃時代的文獻:
W.Diffie and M.E.Hellman, New Directrions in Cryptography, IEEE Transaction on Information Theory, V.IT-22.No.6, Nov 1976, PP.644-654
單向陷門函數是滿足下列條件的函數f:
(1)給定x,計算y=f(x)是容易的;
(2)給定y, 計算x使y=f(x)是困難的。
(所謂計算x=f-1(Y)困難是指計算上相當復雜,已無實際意義。)
(3)存在δ,已知δ 時,對給定的任何y,若相應的x存在,則計算x使y=f(x)是容易的。
註:1*. 僅滿足(1)、(2)兩條的稱為單向函數;第(3)條稱為陷門性,δ 稱為陷門信息。
2*. 當用陷門函數f作為加密函數時,可將f公開,這相當於公開加密密鑰。此時加密密鑰便稱為公開鑰,記為Pk。 f函數的設計者將δ 保密,用作解密密鑰,此時δ 稱為秘密鑰匙,記為Sk。由於加密函數時公開的,任何人都可以將信息x加密成y=f(x),然後送給函數的設計者(當然可以通過不安全信道傳送);由於設計者擁有Sk,他自然可以解出x=f-1(y)。
3*.單向陷門函數的第(2)條性質表明竊聽者由截獲的密文y=f(x)推測x是不可行的。
Diffie和Hellman在其里程碑意義的文章中,雖然給出了密碼的思想,但是沒有給出真正意義上的公鑰密碼實例,也既沒能找出一個真正帶陷門的單向函數。然而,他們給出單向函數的實例,並且基於此提出Diffie-Hellman密鑰交換演算法。這個演算法是基於有限域中計算離散對數的困難性問題之上的:設F為有限域,g∈ F是F的乘法群F*=F\{0}=<g>。並且對任意正整數x,計算gx是容易的;但是已知g和y求x使y= gx,是計算上幾乎不可能的。這已問題稱為有限域F上的離散對數問題。公鑰密碼學種使用最廣泛的有限域為素域FP.
對Diffie-Hellman密鑰交換協議描述:Alice和Bob協商好一個大素數p,和大的整數g,1<g<p,g最好是FP中的本原元,即FP*=<g>。p和g無須保密,可為網路上的所有用戶共享。
當Alice和Bob要進行保密通信時,他們可以按如下步驟來做:
(1)Alice送取大的隨機數x,並計算
X=gx(mod P)
(2)Bob選取大的隨機數x,並計算X  = gx (mod P)
(3)Alice將X傳送給Bob;Bob將X 傳送給Alice。
(4)Alice計算K=(X )X(mod P);Bob計算K  =(X) X (mod P),易見,K=K  =g xx (mod P)。
由(4)知,Alice和Bob已獲得了相同的秘密值K。雙方以K作為加解密鑰以傳統對稱密鑰演算法進行保密通信。
註:Diffie-Hellman密鑰交換演算法擁有美國和加拿大的專利。
3 RSA公鑰演算法
RSA公鑰演算法是由Rivest,Shamir和Adleman在1978年提出來的(見Communitions of the ACM. Vol.21.No.2. Feb. 1978, PP.120-126)該演算法的數學基礎是初等數論中的Euler(歐拉)定理,並建立在大整數因子的困難性之上。
將Z/(n)表示為 Zn,其中n=pq; p,q為素數且相異。若
Z*n{g∈ Zn|(g,n)=1},易見Z*n為  (n)階的乘法群,且有 g  (n)1(mod n),而  (n)=(p-1)(q-1).
RSA密碼體制描述如下:
首先,明文空間P=密文空間C=Zn.(見P175).
A.密鑰的生成
選擇p,q,p,q為互異素數,計算n=p*q,  (n)=(p-1)(q-1), 選擇整數e使( (n),e)=1,1<e< (n)),計算d,使d=e-1(mod  (n))),公鑰Pk={e,n};私鑰Sk={d,p,q}。
注意,當0<M<n時,M (n) =1(mod n)自然有:
MK (n)+1M(mod n), 而ed  1 (mod  (n)),易見(Me)d  M(mod n)
B.加密 (用e,n) 明文:M<n 密文:C=Me(mod n).
C.解密 (用d,p,q)
密文:C 明文:M=Cd(mod n)
註:1*, 加密和解密時一對逆運算。
2*, 對於0<M<n時,若(M,n) ≠ 1,則M為p或q的整數倍,假設M=cp,由(cp,q)=1 有 M (q)  1(mod q) M  (q)  (p)  1(mod q)
有M (q) = 1+kq 對其兩邊同乘M=cp有
有M (q)+1=M+kcpq=M+kcn於是
有M (q)+1  M(mod n)
例子:若Bob選擇了p=101和q=113,那麼,n=11413,  (n)=100×112=11200;然而11200=26×52×7,一個正整數e能用作加密指數,當且僅當e不能被2,5,7所整除(事實上,Bob不會分解φ(n),而且用輾轉相除法(歐式演算法)來求得e,使(e, φ(n)=1)。假設Bob選擇了e=3533,那麼用輾轉相除法將求得:
d=e -1  6597(mod 11200), 於是Bob的解密密鑰d=6597.
Bob在一個目錄中公開n=11413和e=3533, 現假設Alice想發送明文9726給Bob,她計算:
97263533(mod 11413)=5761
且在一個信道上發送密文5761。當Bob接收到密文5761時,他用他的秘密解密指數(私鑰)d=6597進行解密:57616597(mod 11413)=9726
註:RSA的安全性是基於加密函數ek(x)=xe(mod n)是一個單向函數,所以對的人來說求逆計算不可行。而Bob能解密的陷門是分解n=pq,知 (n)=(p-1)(q-1)。從而用歐氏演算法解出解密私鑰d.
4 RSA密碼體制的實現
實現的步驟如下:Bob為實現者
(1)Bob尋找出兩個大素數p和q
(2)Bob計算出n=pq和 (n)=(p-1)(q-1).
(3)Bob選擇一個隨機數e(0<e<  (n)),滿足(e,  (n))=1
(4)Bob使用輾轉相除法計算d=e-1(mod  (n))
(5)Bob在目錄中公開n和e作為她的公開鑰。
密碼分析者攻擊RSA體制的關鍵點在於如何分解n。若分
解成功使n=pq,則可以算出φ(n)=(p-1)(q-1),然後由公
開的e,解出秘密的d。(猜想:攻破RSA與分解n是多項式
等價的。然而,這個猜想至今沒有給出可信的證明!!!)
於是要求:若使RSA安全,p與q必為足夠大的素數,使
分析者沒有辦法在多項式時間內將n分解出來。建議選擇
p和q大約是100位的十進制素數。 模n的長度要求至少是
512比特。EDI攻擊標准使用的RSA演算法中規定n的長度為
512至1024比特位之間,但必須是128的倍數。國際數字
簽名標准ISO/IEC 9796中規定n的長度位512比特位。
為了抵抗現有的整數分解演算法,對RSA模n的素因子
p和q還有如下要求:
(1)|p-q|很大,通常 p和q的長度相同;
(2)p-1 和q-1分別含有大素因子p1和q1
(3)P1-1和q1-1分別含有大素因子p2和q2
(4)p+1和q+1分別含有大素因子p3和q3

為了提高加密速度,通常取e為特定的小整數,如EDI國際標准中規定 e=216+1,ISO/IEC9796中甚至允許取e=3。這時加密速度一般比解密速度快10倍以上。 下面研究加解密算術運算,這個運算主要是模n的求冪運算。著名的「平方-和-乘法」方法將計算xc(mod n)的模乘法的數目縮小到至多為2l,這里的l是指數c的二進製表示比特數。若設n以二進制形式表示有k比特,即k=[log2n]+1。 由l≤ k,這樣xc(mod n)能在o(k3)時間內完成。(注意,不難看到,乘法能在o(k2)時間內完成。)

平方-和-乘法演算法:
指數c以二進制形式表示為:

c=
Xc=xc0×(x2)c1×…×(x2t-1)ct-1
預計算: x2=xx
x4=x22=x2x2
.
.
.
x2t-1 =x2t-2*x2t-2
Xc計算:把那些ci=1對應的x2i全部乘在一起,便得xc。至
多用了t-1次乘法。請參考書上的177頁,給出計算
xc(mod n)演算法程序:
A=xc c=c0+c12+..+ct-12t-1= [ct-1,....,c1,c0]2
5 RSA簽名方案

簽名的基本概念
傳統簽名(手寫簽名)的特徵:
(1)一個簽名是被簽文件的物理部分;
(2)驗證物理部分進行比較而達到確認的目的。(易偽造)
(3)不容易忠實地「」!!!
定義: (數字簽名方案)一個簽名方案是有簽署演算法與驗
證演算法兩部分構成。可由五元關系組(P,A,K,S,V)來刻化:
(1)P是由一切可能消息(messages)所構成的有限集合;
(2)A是一切可能的簽名的有限集合;
(3)k為有限密鑰空間,是一些可能密鑰的有限集合;
(4)任意k ∈K,有簽署演算法Sigk ∈ S且有對應的驗證演算法Verk∈V,對每一個
Sigk:p A 和Verk:P×A {真,假} 滿足條件:任意x∈ P,y∈ A.有簽名方案的一個簽名:Ver(x,y)= {
註:1*.任意k∈K, 函數Sigk和Verk都為多項式時間函數。
2*.Verk為公開的函數,而Sigk為秘密函數。
3*.如果壞人(如Oscar)要偽造Bob的對X的簽名,在計算上是不可能的。也即,給定x,僅有Bob能計算出簽名y使得Verk(x,y)=真。
4*.一個簽名方案不能是無條件安全的,有足夠的時間,Oscar總能偽造Bob的簽名。
RSA簽名:n=pq,P=A=Zn,定義密鑰集合K={(n,e,p,q,d)}|n=pq,d*e1(mod (n))}
注意:n和e為公鑰;p,q,d為保密的(私鑰)。對x∈P, Bob要對x簽名,取k∈K。Sigk(x) xd(mod n)y(mod n)
於是
Verk(x,y)=真 xye(mod n)
(注意:e,n公開;可公開驗證簽名(x,y)對錯!!也即是否為Bob的簽署)
註:1*.任何一個人都可對某一個簽署y計算x=ek(y),來偽造Bob對隨機消息x的簽名。
2*.簽名消息的加密傳遞問題:假設Alice想把簽了名的消息加密送給Bob,她按下述方式進行:對明文x,Alice計算對x的簽名,y=SigAlice(x),然後用Bob的公開加密函數eBob,算出
Z=eBob(x,y) ,Alice 將Z傳給Bob,Bob收到Z後,第一步解密,
dBob(Z)=dBobeBob(x,y)=(x,y)
然後檢驗
VerAlice(x,y)= 真
問題:若Alice首先對消息x進行加密,然後再簽名,結果
如何呢?Y=SigAlice(eBob(x))
Alice 將(z,y)傳給Bob,Bob先將z解密,獲取x;然後用
VerAlice檢驗關於x的加密簽名y。這個方法的一個潛在問
題是,如果Oscar獲得了這對(z,y),他能用自己的簽名來
替代Alice的簽名
y=SigOscar(eBob(x))
(注意:Oscar能簽名密文eBob(x),甚至他不知明文x也能做。Oscar傳送(z,y )給Bob,Bob可能推斷明文x來自Oscar。所以,至今人么還是推薦先簽名後加密。)
6.EIGamal方案

EIGamal公鑰密碼體制是基於離散對數問題的。設P
至少是150位的十進制素數,p-1有大素因子。Zp為有限域,
若α為Zp中的本原元,有Zp* =<α>。若取β∈Zp*=Zp\{0},
如何算得一個唯一得整數a,(要求,0≤a≤ p-2),滿足
αa=β(mod p)
將a記為a=logαβ
一般來說,求解a在計算上是難處理的。
Zp*中的Egamal公鑰體制的描述:設明文空間為P=Zp*,密文空
間為C=Zp*×Zp*,定義密鑰空間K={(p, α,a, β )|β=αa(mod p)}
公開鑰為:p, α ,β
秘密鑰(私鑰):a
Alice 取一個秘密隨機數k∈ Zp-1,對明文x加密
ek(x,k)=(y1,y2)
其中, y1=αk(mod p),y2=xβk(mod p)
Bob解密,
dk(y1,y2)=y2(y1α)-1(mod p)
註:1*.容易驗證y2(y1α)-1=x(αa)k(αka)-1=x !!
2*.利用EIGamal加密演算法可給出基於此的簽名方案:
Alice 要對明文x進行簽名,她首先取一個秘密隨機數k作
為簽名
Sigk(x,k)=( ,  )
其中 =αk(mod p), =(x-a )k-1(mod p-1)
對x, ∈Zp*和 ∈ Zp-1,定義Verk(x, ,)=真等價於
βα=αx(mod p)
要說明的是,如果正確地構造了這個簽名,那麼驗證將
是成功的,因為
βα= αa αk (mod p)= αa+k (mod p)
由上面知道, =(x- a)k-1(mod p-1)可以推出
k=x- a(mod p-1)有a+kx(mod p)
所以 β  = αx (mod p)
該簽名方案已經被美國NIST(國家標准技術研究所)確定為簽名標准(1985)。

有關RSA方面的內容,請訪問網址:
www.RSAsecurity.com

6. 矩陣的實際應用都有哪些

1、矩陣在經濟生活中的應用

矩陣就是在行列式的基礎上演變而來的,可活用行列式求花費總和最少等類似的問題;可借用特徵值和特徵向量預測若干年後的污水水平等問題;也可利用矩陣的方法求線性規劃問題中的最優解,求解企業生產哪一種類型的產品,獲得的利潤最大。

2、在人口流動問題方面的應用

這是矩陣高次冪的應用,比如預測未來的人口數量、人口的發展趨勢等。

3、矩陣在密碼學中的應用

可用可逆矩陣及其逆矩陣對需發送的秘密消息加密和譯密。

4、矩陣在文獻管理中的應用

在現代搜索中往往包括幾百個文件和成千的關鍵詞,但可以利用矩陣和向量的稀疏性,節省計算機的存儲空間和搜索時間。

矩陣圖法的用途十分廣泛,在質量管理中,常用矩陣圖法解決以下問題:

1、把系列產品的硬體功能和軟體功能相對應,並要從中找出研製新產品或改進老產品的切入點;

2、明確應保證的產品質量特性及其與管理機構或保證部門的關系,使質量保證體制更可靠;

3、明確產品的質量特性與試驗測定項目、試驗測定儀器之間的關系,力求強化質量評價體制或使之提高效率;

4、當生產工序中存在多種不良現象,且它們具有若干個共同的原因時,希望搞清這些不良現象及其產生原因的相互關系,進而把這些不良現象一舉消除。

7. 矩陣的逆在通信加密中的運用

在分析線性代數在高職基礎教育的基礎上,立足學生的基本學情,闡述了逆矩陣在保密通信中的實際應用

熱點內容
命令行訪問ftp 發布:2025-02-09 14:10:53 瀏覽:61
加密文件模板 發布:2025-02-09 14:10:13 瀏覽:223
翁虹ftp 發布:2025-02-09 14:02:54 瀏覽:131
java加密對稱 發布:2025-02-09 13:55:49 瀏覽:413
坤詡錢包為什麼沒有安卓版 發布:2025-02-09 13:50:49 瀏覽:299
存儲過程性能優化 發布:2025-02-09 13:42:59 瀏覽:730
源碼失竊 發布:2025-02-09 13:38:34 瀏覽:528
自動瀏覽器腳本 發布:2025-02-09 13:37:00 瀏覽:142
易語言問道源碼 發布:2025-02-09 12:59:03 瀏覽:664
ip和伺服器有關嗎 發布:2025-02-09 12:51:26 瀏覽:952