四方密碼
四方密碼用4個5×5的矩陣來加密。每個矩陣都有25個字母(通常會取消Q或將I,J視作同一樣,或改進為6×6的矩陣,加入10個數(shù)字)。
首先選擇兩個英文字作密匙,例如example和keyword。對于每一個密匙,將重復出現(xiàn)的字母去除,即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 WO a b c d e
R D A BC 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
二方密碼
二方密碼(en:Two-square_cipher)比四方密碼用更少的矩陣。
得出加密矩陣的方法和四方密碼一樣。
例如用「example」和「keyword」作密匙,加密lp。首先找出第一個字母(L)在上方矩陣的位置,再找出第二個字母(P)在下方矩陣的位置:
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。約有二成的內容都因此而暴露。
公開密鑰算法總是要基于一個數(shù)學上的難題。比如RSA 依據(jù)的是:給定兩個素數(shù)p和q 很容易相乘得到n,而對n進行因式分解卻相對困難。那橢圓曲線上有什么難題呢?
考慮如下等式 :
K=kG [其中 K,G為Ep(a,b)上的點,k為小于n(n是點G的階)的整數(shù)]
不難發(fā)現(xiàn),給定k和G,根據(jù)乘法法則,計算K很容易;但給定K和G,求k就相對困難了。
這就是橢圓曲線加密算法采用的難題。我們把點G稱為基點(base point),k(k<n,n為基點G的階)稱為私有密鑰(privte key),K稱為公開密鑰(public key)。
例如我們描述一個利用橢圓曲線進行加密通信的過程:
1、用戶A選定一條橢圓曲線Ep(a,b),并取橢圓曲線上一點,作為基點G。
2、用戶A選擇一個私有密鑰k,并生成公開密鑰K=kG。
3、用戶A將Ep(a,b)和點K,G傳給用戶B。
4、用戶B接到信息后 ,將待傳輸?shù)拿魑木幋a到Ep(a,b)上一點M(編碼方法很多,這里不作討論),并產(chǎn)生一個隨機整數(shù)r(r<n)。
5、用戶B計算點C1=M+rK,C2=rG。
6、用戶B將C1,C2傳給用戶A。
7、用戶A接到信息后,計算C1-kC2,結果就是點M。因為
C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M
再對點M進行解碼就可以得到明文。
ECC的功能比RSA強。而令人感興趣的是點和點的過程,這也是其功能之來源
ECC加密法
ECC算法也是一個能同時用于加密和數(shù)字簽名的算法,也易于理解和操作。同RSA算法是一樣是非對稱密碼算法使用其中一個加密,用另一個才能解密。
RSA算法是第一個能同時用于加密和數(shù)字簽名的算法,也易于理解和操作。RSA算法是一種非對稱密碼算法,所謂非對稱,就是指該算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。
RSA的算法涉及三個參數(shù):n,e1,e2。
其中,n是兩個大質數(shù)p和q的積,n的二進制表示時所占用的位數(shù),就是所謂的密鑰長度。
e1和e2是一對相關的值,e1可以任意取,但要求e1與(p-1)*(q-1)互質(互質:兩個正整數(shù)只有公約數(shù)1時,他們的關系叫互質);再選擇e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n,e1),(n,e2)就是密鑰對。
RSA加解密的算法完全相同,設A為明文,B為密文,則:A=B^e1 mod n;B=A^e2 mod n
e1和e2可以互換使用,即:A=B^e2 mod n;B=A^e1 mod n
多碼加密法:一種加密法,其替換形式是:可以用多個字母來替換明文中的一個字母。
回轉輪加密法:一種多碼加密法,它是用多個回轉輪,每個回轉輪實現(xiàn)單碼加密。這些回轉輪可以組合在一起,在每個字母加密后產(chǎn)生一種新的替換模式。
換位加密法:重新排列明文中的字母位置的加密法。
替換加密法:用一個字符替換另一個字符的加密方法。