導航:首頁 > 文檔加密 > 矩陣數據如何加密

矩陣數據如何加密

發布時間:2024-11-01 17:24:33

A. 常用的加密演算法有哪些

對稱密鑰加密

對稱密鑰加密 Symmetric Key Algorithm 又稱為對稱加密、私鑰加密、共享密鑰加密:這類演算法在加密和解密時使用相同的密鑰,或是使用兩個可以簡單的相互推算的密鑰,對稱加密的速度一般都很快。

B. 如何使用java對密碼加密 加密方式aes

Java有相關的實現類:具體原理如下
對於任意長度的明文,AES首先對其進行分組,每組的長度為128位。分組之後將分別對每個128位的明文分組進行加密。
對於每個128位長度的明文分組的加密過程如下:
(1)將128位AES明文分組放入狀態矩陣中。
(2)AddRoundKey變換:對狀態矩陣進行AddRoundKey變換,與膨脹後的密鑰進行異或操作(密鑰膨脹將在實驗原理七中詳細討論)。
(3)10輪循環:AES對狀態矩陣進行了10輪類似的子加密過程。前9輪子加密過程中,每一輪子加密過程包括4種不同的變換,而最後一輪只有3種變換,前9輪的子加密步驟如下:
● SubBytes變換:SubBytes變換是一個對狀態矩陣非線性的變換;
● ShiftRows變換:ShiftRows變換對狀態矩陣的行進行循環移位;
● MixColumns變換:MixColumns變換對狀態矩陣的列進行變換;
● AddRoundKey變換:AddRoundKey變換對狀態矩陣和膨脹後的密鑰進行異或操作。
最後一輪的子加密步驟如下:
● SubBytes變換:SubBytes變換是一個對狀態矩陣非線性的變換;
● ShiftRows變換:ShiftRows變換對狀態矩陣的行進行循環移位;
● AddRoundKey變換:AddRoundKey變換對狀態矩陣和膨脹後的密鑰進行異或操作;
(4)經過10輪循環的狀態矩陣中的內容就是加密後的密文。
AES的加密演算法的偽代碼如下。

在AES演算法中,AddRoundKey變換需要使用膨脹後的密鑰,原始的128位密鑰經過膨脹會產生44個字(每個字為32位)的膨脹後的密鑰,這44個字的膨脹後的密鑰供11次AddRoundKey變換使用,一次AddRoundKey使用4個字(128位)的膨脹後的密鑰。
三.AES的分組過程
對於任意長度的明文,AES首先對其進行分組,分組的方法與DES相同,即對長度不足的明文分組後面補充0即可,只是每一組的長度為128位。
AES的密鑰長度有128比特,192比特和256比特三種標准,其他長度的密鑰並沒有列入到AES聯邦標准中,在下面的介紹中,我們將以128位密鑰為例。
四.狀態矩陣
狀態矩陣是一個4行、4列的位元組矩陣,所謂位元組矩陣就是指矩陣中的每個元素都是一個1位元組長度的數據。我們將狀態矩陣記為State,State中的元素記為Sij,表示狀態矩陣中第i行第j列的元素。128比特的明文分組按位元組分成16塊,第一塊記為「塊0」,第二塊記為「塊1」,依此類推,最後一塊記為「塊15」,然後將這16塊明文數據放入到狀態矩陣中,將這16塊明文數據放入到狀態矩陣中的方法如圖2-2-1所示。

塊0

塊4

塊8

塊12

塊1

塊5

塊9

塊13

塊2

塊6

塊10

塊14

塊3

塊7

塊11

塊15

圖2-2-1 將明文塊放入狀態矩陣中
五.AddRoundKey變換
狀態矩陣生成以後,首先要進行AddRoundKey變換,AddRoundKey變換將狀態矩陣與膨脹後的密鑰進行按位異或運算,如下所示。

其中,c表示列數,數組W為膨脹後的密鑰,round為加密輪數,Nb為狀態矩陣的列數。
它的過程如圖2-2-2所示。

圖2-2-2 AES演算法AddRoundKey變換
六.10輪循環
經過AddRoundKey的狀態矩陣要繼續進行10輪類似的子加密過程。前9輪子加密過程中,每一輪要經過4種不同的變換,即SubBytes變換、ShiftRows變換、MixColumns變換和AddRoundKey變換,而最後一輪只有3種變換,即SubBytes變換、ShiftRows變換和AddRoundKey變換。AddRoundKey變換已經討論過,下面分別討論餘下的三種變換。
1.SubBytes變換
SubBytes是一個獨立作用於狀態位元組的非線性變換,它由以下兩個步驟組成:
(1)在GF(28)域,求乘法的逆運算,即對於α∈GF(28)求β∈GF(28),使αβ =βα = 1mod(x8 + x4 + x3 + x + 1)。
(2)在GF(28)域做變換,變換使用矩陣乘法,如下所示:

由於所有的運算都在GF(28)域上進行,所以最後的結果都在GF(28)上。若g∈GF(28)是GF(28)的本原元素,則對於α∈GF(28),α≠0,則存在
β ∈ GF(28),使得:
β = gαmod(x8 + x4 + x3 + x + 1)
由於g255 = 1mod(x8 + x4 + x3 + x + 1)
所以g255-α = β-1mod(x8 + x4 + x3 + x + 1)
根據SubBytes變換演算法,可以得出SubBytes的置換表,如表2-2-1所示,這個表也叫做AES的S盒。該表的使用方法如下:狀態矩陣中每個元素都要經過該表替換,每個元素為8比特,前4比特決定了行號,後4比特決定了列號,例如求SubBytes(0C)查表的0行C列得FE。
表2-2-1 AES的SubBytes置換表

它的變換過程如圖2-2-3所示。

圖2-2-3 SubBytes變換
AES加密過程需要用到一些數學基礎,其中包括GF(2)域上的多項式、GF(28)域上的多項式的計算和矩陣乘法運算等,有興趣的同學請參考相關的數學書籍。
2.ShiftRows變換
ShiftRows變換比較簡單,狀態矩陣的第1行不發生改變,第2行循環左移1位元組,第3行循環左移2位元組,第4行循環左移3位元組。ShiftRows變換的過程如圖2-2-4所示。

圖2-2-4 AES的ShiftRows變換
3.MixColumns變換
在MixColumns變換中,狀態矩陣的列看作是域GF(28)的多項式,模(x4+1)乘以c(x)的結果:
c(x)=(03)x3+(01)x2+(01)x+(02)
這里(03)為十六進製表示,依此類推。c(x)與x4+1互質,故存在逆:
d(x)=(0B)x3+(0D)x2+(0G)x+(0E)使c(x)•d(x) = (D1)mod(x4+1)。
設有:

它的過程如圖2-2-5所示。

圖2-2-5 AES演算法MixColumns變換
七.密鑰膨脹
在AES演算法中,AddRoundKey變換需要使用膨脹後的密鑰,膨脹後的密鑰記為子密鑰,原始的128位密鑰經過膨脹會產生44個字(每個字為32位)的子密鑰,這44個字的子密鑰供11次AddRoundKey變換使用,一次AddRoundKey使用4個字(128位)的膨脹後的密鑰。
密鑰膨脹演算法是以字為基礎的(一個字由4個位元組組成,即32比特)。128比特的原始密鑰經過膨脹後將產生44個字的子密鑰,我們將這44個密鑰保存在一個字數組中,記為W[44]。128比特的原始密鑰分成16份,存放在一個位元組的數組:Key[0],Key[1]……Key[15]中。
在密鑰膨脹演算法中,Rcon是一個10個字的數組,在數組中保存著演算法定義的常數,分別為:
Rcon[0] = 0x01000000
Rcon[1] = 0x02000000
Rcon[2] = 0x04000000
Rcon[3] = 0x08000000
Rcon[4] = 0x10000000
Rcon[5] = 0x20000000
Rcon[6] = 0x40000000
Rcon[7] = 0x80000000
Rcon[8] = 0x1b000000
Rcon[9] = 0x36000000
另外,在密鑰膨脹中包括其他兩個操作RotWord和SubWord,下面對這兩個操作做說明:
RotWord( B0,B1,B2,B3 )對4個位元組B0,B1,B2,B3進行循環移位,即
RotWord( B0,B1,B2,B3 ) = ( B1,B2,B3,B0 )
SubWord( B0,B1,B2,B3 )對4個位元組B0,B1,B2,B3使用AES的S盒,即
SubWord( B0,B1,B2,B3 ) = ( B』0,B』1,B』2,B』3 )
其中,B』i = SubBytes(Bi),i = 0,1,2,3。
密鑰膨脹的演算法如下:

八.解密過程
AES的加密和解密過程並不相同,首先密文按128位分組,分組方法和加密時的分組方法相同,然後進行輪變換。
AES的解密過程可以看成是加密過程的逆過程,它也由10輪循環組成,每一輪循環包括四個變換分別為InvShiftRows變換、InvSubBytes變換、InvMixColumns變換和AddRoundKey變換;
這個過程可以描述為如下代碼片段所示:

九.InvShiftRows變換
InvShiftRows變換是ShiftRows變換的逆過程,十分簡單,指定InvShiftRows的變換如下。
Sr,(c+shift(r,Nb))modNb= Sr,c for 0 < r< 4 and 0 ≤ c < Nb
圖2-2-6演示了這個過程。

圖2-2-6 AES演算法InvShiftRows變換
十.InvSubBytes變換
InvSubBytes變換是SubBytes變換的逆變換,利用AES的S盒的逆作位元組置換,表2-2-2為InvSubBytes變換的置換表。
表2-2-2 InvSubBytes置換表

十一.InvMixColumns變換
InvMixColumns變換與MixColumns變換類似,每列乘以d(x)
d(x) = (OB)x3 + (0D)x2 + (0G)x + (0E)
下列等式成立:
( (03)x3 + (01)x2 + (01)x + (02) )⊙d(x) = (01)
上面的內容可以描述為以下的矩陣乘法:

十二.AddRoundKey變換
AES解密過程的AddRoundKey變換與加密過程中的AddRoundKey變換一樣,都是按位與子密鑰做異或操作。解密過程的密鑰膨脹演算法也與加密的密鑰膨脹演算法相同。最後狀態矩陣中的數據就是明文。

C. AES128鍔犺В瀵嗘祦紼嬭︾粏浠嬬粛


AES128鍔犲瘑/瑙e瘑嫻佺▼娣卞害瑙f瀽


鍔犲瘑榪囩▼: AES128鐨勫姞瀵嗕箣鏃呭嬩簬16瀛楄妭鐨勫師濮嬫暟鎹鍜16瀛楄妭鐨勫瘑閽ワ紝棣栧厛灝嗕袱鑰呰瀺鍚堝埌涓涓鎺掑垪鐭╅樀涓銆傛帴鐫錛岄氳繃杞瀵嗛掗鍔狅紙寮傛垨錛夋搷浣滐紝閰嶅悎瀛楄妭浠f浛錛圫鐩掞級鐨勯瓟鏈錛岃岀Щ浣嶄笌鍒楁販娣嗭紙鍥哄畾鐭╅樀錛夌殑宸у欑粍鍚堬紝榪涜10杞榪浠c傛渶鍚庯紝閫氳繃鎵╁睍瀵嗛掗錛圞鐭╅樀鎿嶄綔錛夌敓鎴愪竴涓鍏抽敭妗ユ侊紝紜淇濇暟鎹鐨勫畨鍏ㄨ漿縐匯


鍔犲瘑姝ラよ﹁В錛


  1. 杞瀵嗛掗鍔狅細 4x4瀵嗘枃鍗曞厓涓庢墿灞曞瘑閽ョ殑鏈4瀛楄妭榪涜岃瀺鍚堛

  2. 琛岀Щ浣嶏紙鍔犲瘑涓庤В瀵嗙浉鍙嶏級錛 涓庡姞瀵嗘椂鐨勬ラょ浉鍙嶏紝紜淇濊В瀵嗙殑姝g『榪樺師銆

  3. 瀛楄妭浠f浛錛堥嗗悜S鐩掞級錛 閲囩敤閫嗗悜S鐩掑彉鎹錛岀簿緇嗚皟鏁寸煩闃靛厓緔犮

  4. 杞瀵嗛掗鍔狅紙閲嶅嶏級錛 4杞鍚庯紝鍐嶄笌鎵╁睍瀵嗛掗鐨勫叾浣欓儴鍒嗚繘琛屽姞娉曡繍綆椼

  5. 絎10杞錛 瀵嗘枃鐢熸垚錛屾渶鍚庝竴杞涓嶆販娣嗭紝淇濈暀鍘熷嬩俊鎮鐨勫畬鏁存с


瑙e瘑姝ラわ細 涓庡姞瀵嗙浉鍙嶏紝鐢10杞杞瀵嗛掗鍔狅紝姣忔′嬌鐢ㄦ墿灞曞瘑閽ワ紝紜淇濊繕鍘熷姞瀵嗘椂鐨勬瘡涓姝ャ傝В瀵嗘椂錛岃В瀵嗘槑鏂囧湪10杞鍚庢彮鏅擄紝涓斿湪鏈鍚庝竴杞鏃訛紝鍒楁販娣嗙殑鎿嶄綔闇璋冩暣涓洪嗗悜澶勭悊銆


瀹為檯搴旂敤錛 瀵逛簬鏂囦歡鍔犲瘑錛岄櫎浜嗗熀紜鐨勭數瀛愬瘑鐮佹湰錛圗CB錛夛紝鎴戜滑榪樻湁鍏朵粬瀹夊叏閫夐」銆侲CB鉶界劧綆鍗曪紝浣嗘槗鏆撮湶閲嶅嶆ā寮忥紝闇璋ㄦ厧浣跨敤銆傚瘑鐮佸潡閾炬帴錛圕BC錛夐氳繃鍒濆嬪悜閲忛伩鍏嶆ā寮忛棶棰橈紝鏀鎸佸苟琛岃В瀵嗭紝浣嗚В瀵嗘椂瀵歸敊璇鏁忔劅銆傚瘑鏂囧弽棣堬紙CFB錛変互bit涓哄崟浣嶏紝鎻愪緵棰濆栫殑瀹夊叏灞傦紝浣嗚В瀵嗘椂鏈夐噸鏀炬敾鍑婚庨櫓銆


妯″紡璇﹁В錛


鍦ㄦ枃浠跺垎鍧楁椂錛屽彲鑳戒細鐢ㄥ埌濉鍏呮満鍒訛紝濡侼oPadding銆丳KCS#7銆乑erosPadding絳夛紝浠ユ弧瓚蟲暟鎹瀹屾暣鎬с傚悗緇絝犺妭灝嗘繁鍏ユ帰璁ㄨ繖浜涙妧鏈浠ュ強鍙鑳界殑鏀誨嚮鐮磋В絳栫暐銆


D. 四方密碼加密方法

四方密碼是一種對稱式加密法,由法國人Felix Delastelle(1840年–1902年)發明。

這種方法將字母兩個一組,然後採用多字母替換密碼。

四方密碼用4個5×5的矩陣來加密。每個矩陣都有25個字母(通常會取消Q或將I,J視作同一樣,或改進為6×6的矩陣,加入10個數字)。

首先選擇兩個英文字作密匙,例如example和keyword。對於每一個密匙,將重復出現的字母去除,即example要轉成exampl,然後將每個字母順序放入矩陣,再將餘下的字母順序放入矩陣,便得出加密矩陣。

將這兩個加密矩陣放在左上角和右下角,餘下的兩個角放a到z順序的矩陣:
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z

K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
加密的步驟:

兩個字母一組地分開訊息:(例如hello world變成he ll ow or ld)
找出第一個字母在左上角矩陣的位置
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
同樣道理,找第二個字母在右下角矩陣的位置:

a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
找右上角矩陣中,和第一個字母同行,第二個字母同列的字母:
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z

找左下角矩陣中,和第一個字母同列,第二個字母同行的字母:
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
這兩個字母就是加密過的訊息。

hello world的加密結果:

he lp me ob iw an ke no bi
FY GM KY HO BX MF KK KI MD
[編輯]二方密碼
二方密碼(en:Two-square_cipher)比四方密碼用更少的矩陣。

得出加密矩陣的方法和四方密碼一樣。

例如用「example」和「keyword」作密匙,加密lp。首先找出第一個字母(L)在上方矩陣的位置,再找出第二個字母(D)在下方矩陣的位置:

E X A M P
L B C D F
G H I J K
N O R S T
U V W Y Z

K E Y W O
R D A B C
F G H I J
L M N P S
T U V X Z
在上方矩陣找第一個字母同行,第二個字母同列的字母;在下方矩陣找第一個字母同列,第二個字母同行的字母,那兩個字母就是加密的結果:

E X A M P
L B C D F
G H I J K
N O R S T
U V W Y Z

K E Y W O
R D A B C
F G H I J
L M N P S
T U V X Z
help me的加密結果:

he lp me
HE DL XW
這種加密法的弱點是若兩個字同列,便採用原來的字母,例如he便加密作HE。約有二成的內容都因此而暴露

E. 請用矩陣變位法將明文:」computer 」加密,並寫出其密文。 密鑰: 3×3矩陣,置換: f=((123) (312))

樓主你好~~

密鑰為3*3矩陣,置換為f=((1,2,3),(3,1,2)),也就是說將明1列->密3列,明2列->密1列,明3列->密2列。

我們分步進行
1)構造3x3矩陣:

| 1 | 2 | 3 |

| _ | _ | _ |
| _ | _ | _ |
| _ | _ | _ |

2)填入明文:
| 1 | 2 | 3 |

| _ | C | O | <-注意第一個有一個空格
| M | P | U |
| T | E | R |

3)矩陣變位,置換為f=((1,2,3),(3,1,2)):

| 3 | 1 | 2 |

| O | _ | C |

| U | M | P |
| R | T | E |

4)輸出密文:
o_cumprte <- 注意_就是空格

其實矩陣變位本質是周期性改變明文段排列的加密方法,屬於古典加密中的置換移位加密,這一類中最著名的是維吉尼亞加密法,古典加密還有個分類是替代加密,例如凱撒加密法,古典加密都屬於對稱加密,都禁受不住字典攻擊。

閱讀全文

與矩陣數據如何加密相關的資料

熱點內容
小程序地產廣告源碼 瀏覽:540
消費者信息加密私域 瀏覽:429
程序員開發團隊可以怎麼創業 瀏覽:925
設備共享伺服器是什麼意思 瀏覽:124
java符號類型 瀏覽:331
redis客戶端java 瀏覽:214
javatn 瀏覽:278
應用寶哪裡下載王卡免流量app 瀏覽:235
uv7代噴頭加密與不加密 瀏覽:467
滾動指標源碼查詢 瀏覽:986
夢幻西遊lua源碼修改教程 瀏覽:937
androidphp環境 瀏覽:762
php前台頁面 瀏覽:493
程序員hr怎麼挽留 瀏覽:817
學習編程視頻剪輯的書 瀏覽:170
安卓什麼時候更新軟體格式 瀏覽:978
三星920sc加密碼 瀏覽:721
南航app在哪裡 瀏覽:743
我的世界伺服器菜單怎麼做出來 瀏覽:366
馬後炮編程視頻 瀏覽:649