青青草国产成人av片免费/香港三级日本韩国三级专线/国内自拍在钱/天堂国产女人av

回復

[推薦]通向密碼達人——密碼教學帖

樓主: 2740 | 查看: 1萬 | 回復: 21

發表于 2009-4-3 22:48:34
【密碼常識】

字母表順序-數字
  加密的時候,經常要把A~Z這26個字母轉換成數字,最常見的一種方法就是取字母表中的數字序號。A代表1,B代表2,C代表3...

  字母 A B C D E F G H I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
  數字 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

進制轉換密碼
  例如二進制:1110 10101 1101 10 101 10010 1111 1110 101
  轉為十進制:14 21 13 2 5 18 15 14 5
  對應字母表:number

Mod算法
  我們可以對字母序號進行數學運算,然后把所得的結果作為密文。當運算結果大于26或小于1的時候,我們希望把這個數值轉為1~26的范圍,那么取這個數除以26的余數即可。

  Mod就是求余數的運算符,有時也用“%”表示。例如 29 Mod 26 = 3,或寫成 29 % 26 = 3,意思是29除以26的余數是3。

倒序
  加密時為經常要對字符進行倒序處理。如果讓你按abcdef...的順序背出字母表的每個字母會很容易,但是如果是zyxwvu...的順序那就很難背出來了。一個很熟悉的單詞,如果按相反的順序拼寫,可能就會感到很陌生。

  例如“love”字母倒過來拼就是“evol”。

  具體加密時倒序有很多種方案,需要靈活運用。例如:

  每個單詞的倒序:siht si a tset - this is a test
  整句的倒序:tset a si siht - this is a test
  數字的倒序:02 50 91 02 - 20 05 19 20(test)

間隔
  單詞之間的間隔一般使用空格。在加密時常常要去掉空格,但有時某些字母或數字來替代空格也不失為一種好的加密方案。錯誤空格位置也會起到很強的誤導作用。

  例如:t hi sis at est - this is a test

字母頻率
  頻率分析法可以有效的破解單字母替換密碼。

  關于詞頻問題的密碼,我在這里提供英文字母的出現頻率給大家,其中數字全部是出現的百分比:
  a  8.2    b  1.5    c  2.8    d  4.3
  e 12.7    f  2.2    g  2.0    h  6.1
  i  7.0    j  0.2    k  0.8    l  4.0
  m  2.4    n  6.7    o  7.5    p  1.9
  q  0.1    r  6.0    s  6.3    t  9.1
  u  2.8    v  1.0    w  2.4    x  0.2
  y  2.0    z  0.1

  詞頻法其實就是計算各個字母在文章中的出現頻率,然后大概猜測出明碼表,最后驗證自己的推算是否正確。這種方法由于要統計字母出現頻率,需要花費時間較長。參考《跳舞的小人》和《金甲蟲》。
【凱撒密碼(Caesar Shifts, Simple Shift)】

  也稱凱撒移位,是最簡單的加密方法之一,相傳是古羅馬愷撒大帝用來保護重要軍情的加密系統,它是一種替代密碼。

  加密公式:密文 = (明文 + 位移數) Mod 26
  解密公式:明文 = (密文 - 位移數) Mod 26

  以《數字城堡》中的一組密碼為例:

  HL FKZC VD LDS

  只需把每個字母都按字母表中的順序依次后移一個字母即可——A變成B,B就成了C,依此類推。因此明文為:

  IM GLAD WE MET

  英文字母的移位以移25位為一個循環,移26位等于沒有移位。所以可以用窮舉法列出所有可能的組合。

  例如:phhw ph diwhu wkh wrjd sduwb

  利用電腦可以方便地列出所有組合,然后從中選出有意義的話:

  qiix qi ejxiv xli xske tevxc
  rjjy rj fkyjw ymj ytlf ufwyd
  skkz sk glzkx znk zumg vgxze
  tlla tl hmaly aol avnh whyaf
  ummb um inbmz bpm bwoi xizbg
  vnnc vn jocna cqn cxpj yjach
  wood wo kpdob dro dyqk zkbdi
  xppe xp lqepc esp ezrl alcej
  yqqf yq mrfqd ftq fasm bmdfk
  zrrg zr nsgre gur gbtn cnegl
  assh as othsf hvs hcuo dofhm
  btti bt puitg iwt idvp epgin
  cuuj cu qvjuh jxu jewq fqhjo
  dvvk dv rwkvi kyv kfxr grikp
  ewwl ew sxlwj lzw lgys hsjlq
  fxxm fx tymxk max mhzt itkmr
  gyyn gy uznyl nby niau julns
  hzzo hz vaozm ocz ojbv kvmot
  iaap ia wbpan pda pkcw lwnpu
  jbbq jb xcqbo qeb qldx mxoqv
  kccr kc ydrcp rfc rmey nyprw
  ldds ld zesdq sgd snfz ozqsx
  meet me after the toga party <-
  nffu nf bgufs uif uphb qbsuz
  oggv og chvgt vjg vqic rctva

  可知明文為:meet me after the toga party
【凱撒移位(中文版)】

  就是按照中文字在Unicode編碼表中的順序進行移位,可以用來加密中文的信息。

  例:[中文凱撒移位]
  轉換成Unicode編碼:中文凱撒移位
  移1位后成為:      丮斈凰撓秼低
  轉換成中文:[丮斈凰撓秼低]
【柵欄密碼(The Rail-Fence Cipher)】

  也稱柵欄易位(Columnar Transposition),即把將要傳遞的信息中的字母交替排成上下兩行,再將下面一行字母排在上面一行的后邊,從而形成一段密碼。柵欄密碼是一種置換密碼。

  例如密文:TEOGSDYUTAENNHLNETAMSHVAED

  解密過程:先將密文分為兩行

  T E O G S D Y U T A E N N
  H L N E T A M S H V A E D

  再按上下上下的順序組合成一句話

  THE LONGEST DAY MUST HAVE AN END.

  .............................................................
  加密時不一定非用兩欄,還是舉《數字城堡》中的一個例子,密文為:

  PFEE SESN RETM MFHA IRWE OOIG MEEN NRMA ENET SHAS DCNS IIAA IEER BRNK FBLE LODI

  去掉空格:PFEESESNRETMMFHAIRWEOOIGMEENNRMAENETSHASDCNSIIAAIEERBRNKFBLELODI

  共64個字符,以8個字符為一欄,排列成8*8的方陣(凱撒方陣):

  P F E E S E S N
  R E T M M F H A
  I R W E O O I G
  M E E N N R M A
  E N E T S H A S
  D C N S I I A A
  I E E R B R N K
  F B L E L O D I

  從上向下豎著讀:PRIMEDIFFERENCEBETWEENELEMENTSRESMONSIBLEFORHIROSHIMAANDNAGASAKI

  插入空格:PRIME DIFFERENCE BETWEEN ELEMENTS RESMONSIBLE FOR HIROSHIMA AND NAGASAKI (廣島和長崎的原子彈轟炸的最主要區別)

  .............................................................
  柵欄密碼也可以用于中文,不過比較容易破解。

  明文:         這是中文的柵欄密碼
  密文(3*3方陣):這文欄是的密中柵碼

  由于中文用規則的柵欄比較容易破解,所以產生了一些變體,例如道家心法密籍《天仙金丹心法》中的一段加密方法。密文如下:

  ○ 茫 天 : 摹 然 月 終 為 鼎 半 是 真 滅 器 輪 假 不 但 伸 凈 著 定 分 泥 萬 ○ 無 ○ 光 人 經 法 一 從 塵 色 返 我 權 自 法 中 妙 大 空 照 生 屈 來 好 路 形 神 海 ○ 便 還 未 歸

  ○ 茫
  天 : 摹
  然 月 終 為
  鼎 半 是 真 滅
  器 輪 假 不 但 伸
  凈 著 定 分 泥 萬 ○
  無 ○ 光 人 經 法 一 從
  塵 色 返 我 權 自 法 中 妙
  大 空 照 生 屈 來 好 路 形 神
  海 ○ 便 還 未 歸

  明文(從上向下豎著讀):天然鼎器凈無塵,大海茫茫月半輪。著色空摹終是假,定光返照便為真。不分人我生還滅,但泥經權屈未伸。萬法自來歸一法,好從中路妙形神。

5

44

分享

| 樓主| 發表于 2009-4-3 22:48:54
【維吉尼亞密碼(Vigenère Cipher)】

  由于頻率分析法可以有效的破解單表替換密碼,法國密碼學家維吉尼亞于1586年提出一種多表替換密碼,即維吉尼亞密碼,也稱維熱納爾密碼。維吉尼亞密碼引入了“密鑰”的概念,即根據密鑰來決定用哪一行的密表來進行替換,以此來對抗字頻統計。

  加密算法:例如密鑰的字母為[d],明文對應的字母。根據字母表的順序[d]=4,=2,那么密文就是[d]+-1=4+2-1=5=[e],因此加密的結果為[e]。解密即做此逆運算。

  加密公式:密文 = (明文 + 密鑰) Mod 26 - 1
  解密公式:明文 = [26 + (密文 - 密鑰)] Mod 26 + 1

  也可以用查表法來進行加密:例如密鑰的字母為[d],明文對應的字母,在下圖的表格第一行找到字母"d"(深藍色),再在左邊第一列找到字母"b"(綠色),兩個字母的交叉點(b行d列)就是字母"E",所以對應的密文字母為[e]。

  [-----------------圖-----------------]

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

  假如對如下明文加密:

  to be or not to be that is the question

  當選定“have”作為密鑰時,加密過程是:密鑰第一個字母為[h],明文第一個為[t],因此可以找到在h行t列中的字母[a],依此類推,得出對應關系如下:

  密鑰:ha ve ha veh av eh aveh av eha vehaveha
  明文:to be or not to be that is the question
  密文:ao wi vr isa tj fl tcea in xoe lylsomvn 【Polybius密碼(Polybius Cipher)】

  也稱棋盤密碼,是利用波利比奧斯方陣(Polybius Square)進行加密的密碼方式,產生于公元前兩世紀的希臘,相傳是世界上最早的一種密碼。

  假設我們需要發送明文訊息 “Attack at once”, 用一套秘密混雜的字母表填滿波利比奧斯方陣,像是這樣:

    A D F G X
  A b t a l p
  D d h o z k
  F q f v s n
  G g j c u x
  X m r e w y

  i和j視為同一個字,使字母數量符合 5 × 5 格。之所以選擇這五個字母,是因為它們譯成摩斯密碼時不容易混淆,可以降低傳輸錯誤的機率。使用這個方格,找出明文字母在這個方格的位置,再以那個字母所在的欄名稱和列名稱代替這個字母。可將該訊息轉換成處理過的分解形式。

  明文:A T T A C K A T O N C E
  密文:AF AD AD AF GF DX AF AD DF FX GF XF

  A,D,F,G,X也可以用數字1,2,3,4,5來代替,這樣密文就成了:

  13 12 12 13 43 25 13 12 23 35 43 53

-------------------------------------------------------------------------
【ADFGX/ADFGVX密碼(ADFGX/ADFGVX Cipher)】

ADFGX
  1918年,第一次世界大戰將要結束時,法軍截獲了一份德軍電報,電文中的所有單詞都由A、D、F、G、X五個字母拼成,因此被稱為ADFGX密碼。ADFGX密碼是1918年3月由德軍上校Fritz Nebel發明的,是結合了Polybius密碼和置換密碼的雙重加密方案。A、D、F、G、X即Polybius方陣中的前5個字母。

  明文:A T T A C K A T O N C E
  經過Polybius變換:AF AD AD AF GF DX AF AD DF FX GF XF

  下一步,利用一個移位密鑰加密。假設密鑰是“CARGO”,將之寫在新格子的第一列。再將上一階段的密碼文一列一列寫進新方格里。

  C A R G O
  _________
  A F A D A
  D A F G F
  D X A F A
  D D F F X
  G F X F X

  最后,密鑰按照字母表順序“ACGOR”排序,再按照此順序依次抄下每個字母下面的整列訊息,形成新密文。如下:

  FAXDF ADDDG DGFFF AFAXX AFAFX

  在實際應用中,移位密鑰通常有兩打字符那么長,且分解密鑰和移位密鑰都是每天更換的。

ADFGVX
  在1918年6月,再加入一個字V擴充。變成以6×6格共36個字符加密。這使得所有英文字母(不再將I和J視為同一個字)以及數字0到9都可混合使用。這次增改是因為以原來的加密法發送含有大量數字的簡短信息有問題。
| 樓主| 發表于 2009-4-3 22:50:03
【乘法密碼(Multiplication Cipher)】

  乘法密碼也是一種簡單的替代密碼,與凱撒密碼相似,凱撒密碼用的是加法,而乘法密碼用的自然是乘法。這種方法形成的加密信息保密性比較低。

  加密公式:密文 = (明文 * 乘數) Mod 26

  對于乘數密碼,只有當乘數與26互質時,加密之后才會有唯一的解,因此乘數只可能有如下11種的選擇:

  乘數 = 3,5,7,9,11,15,17,19,21,23,25

  仿射密碼和希爾密碼因為都用到了乘法,所以乘數也受到相同的局限。

-------------------------------------------------------------------------
【仿射密碼(Affine Shift)】

  仿射密碼就是凱撒密碼和乘法密碼的結合。

  加密公式:密文 = (明文 * 乘數 + 位移數) Mod 26

-------------------------------------------------------------------------
【希爾密碼(Hill Cipher)】

  希爾密碼就是矩陣乘法密碼,運用基本矩陣論原理的替換密碼。每個字母當作26進制數字:A=0, B=1, C=2... 一串字母當成n維向量,跟一個n×n的密鑰矩陣相乘,再將得出的結果模26。希爾密碼的優點是完全隱藏了字符的頻率信息,弱點是容易被已知明文攻擊擊破。

加密
  例如:密鑰矩陣
  1 3
  0 2

  明文:HI THERE

  去空格,2個字母一組,根據字母表順序換成矩陣數值如下,末尾的E為填充字元:

  HI TH ER EE
  8  20 5  5
  9  8  18 5

  HI 經過矩陣運算轉換為 IS,具體算法參考下面的說明:

  |1 3| 8 e1*8+3*9=35 MOD26=9 =I
  |0 2| 9 e0*8+2*9=18 MOD26=18=S

  用同樣的方法把“HI THERE”轉換為密文“IS RPGJTJ”,注意明文中的兩個E分別變為密文中的G和T。

解密
  解密時,必須先算出密鑰的逆矩陣,然后再根據加密的過程做逆運算。

  逆矩陣算法公式:
  |A B| = 1/(AD-BC) * | D -B|
  |C D|               |-C  A|

  例如密鑰矩陣=
  |1 7|
  |0 3|
  AD-BC=1*3-0*7=3 3*X=1 mod26 所以 X=9
  因此
  |1 7| 的逆矩陣為: 9 * |3 -7|
  |0 3|                |0  1|

  假設密文為“FOAOESWO”

  FO AO ES WO
   6  1  5 23
  15 15 19 15

  9* |3 -7| | 6| = 9*(3*6-7*15)=-783 mod26 = 23=W
     |0  1| |15| = 9*(0*6+1*15)= 135 mod26 = 5 =E

  所以密文“FOAOESWO”的明文為“WEREDONE”

-------------------------------------------------------------------------
【Playfair密碼(Playfair Cipher)】

  Playfair將明文中的雙字母組合作為一個單元對待,并將這些單元轉換為雙字母組合。加密后的字符出現的頻率在一定程度上被均勻化。

  5*5變換矩陣(I或J視為同一字符):

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

  加密規則:按成對字母加密

  相同對中的字母加分隔符(如x)
  ballon -> ba lx lo on
  同行取右邊:he->ec
  同列取下邊:dm->mt
  其他取交叉:kt->mq  od->tr

  例如:ballon -> ba lx lo on -> db sp gs ug  


摩斯電碼】

  摩斯電碼(摩爾斯電碼)是一種發報用的信號代碼,是一種替代密碼,用點(Dot)和劃(Dash)的組合來表示各個英文字母或標點。

  國際標準摩斯電碼表

  1 *----    A *-     N -*     [.] *-*-*-
  2 **---    B -***   O ---    [,] --**--
  3 ***--    C -*-*   P *--*   [:] ---***
  4 ****-    D -**    Q --*-   ['] *----*
  5 *****    E *      R *-*    [?] **--**
  6 -****    F **-*   S ***    [-] -****-
  7 --***    G --*    T -      [()] -*--*-
  8 ---**    H ****   U **-    [@] *--*-*
  9 ----*    I **     V ***-   [—] -***-
  0 -----    J *---   W *--    分數線 -**-*
         K -*-    X -**-
         L *-**   Y -*--   終了[\r] ***-*-
         M --     Z --**   始信[\n] -*-*-


  例:Hello (斜線代表字母之間的間隔)
  ****/*/*-**/*-**/---/
【置換密碼(Transposition Cipher)】

  也稱易位密碼。

-------------------------------------------------------------------------
【替代密碼(Monoalphabetic Substitution)】

  也稱單表替換密碼。

字母表數字
  用1-26這些數字分別表示A-Z的字母。

  字母 A B C D E F G H I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
  數字 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

字母表代碼
  同字母表數字,只是把10以下的數字添0補位。

  字母  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
  數字 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

反字母表
  就是丹·布朗在《達·芬奇密碼》一書中提到的埃特巴什碼(Atbash Cipher)。它的原理是取一個字母,指出它位于字母表正數第幾位,再把它替換為從字母表倒數同樣的位數后得到的字母。如:E被替換為V,N被替換為M等。

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

  明文:sophia
  密文:hlksrz

隨機亂序字母
  即單字母替換密碼。重排密碼表二十六個字母的順序,密碼表會增加到四千億億億多種,能有效的防止用篩選的方法檢驗所有的密碼表。這種密碼持續使用幾個世紀,直到阿拉伯人發明了頻率分析法。

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

  明文:forest
  密文:gbmrst

棋盤密碼
  即Polybius密碼。

鍵盤密碼
  加密的原理同棋盤密碼,只是利用了鍵盤作為方陣。

  鍵盤的字母分布:

  ~!@#$%^&*()_+|
  `1234567890-=\
   QWERTYUIOP{}
   qwertyuiop[]
   ASDFGHJKL:"
   asdfghjkl;'
   ZXCVBNM<>?
   zxcvbnm,./

  密文:72 81 12 63 01 12 63
  明文:jianpan

  低下頭看看鍵盤就知道了,密文就是鍵盤上的26個字母的坐標,72即第7列第2行,第7列正好是數字鍵[7]的位置,往下2個就是字母[J]。

鍵盤移位
  密文:kosm[sm
  明文:jianpan

  就是鍵盤上的字母往右一個。例如[j]鍵的右面是[k],鍵的右面是[o],依此類推。

軟鍵盤密碼
  密文1:まはす にはつ へつ たっゃの せちなゃ ひつなゃ てなゃ ひつな ゅつ ぬす
  密文2:ㄈㄘㄍ ㄋㄘㄛ ㄠㄛ ㄗㄟㄙㄕ ㄐㄧㄇㄙ ㄨㄛㄇㄙ ㄣㄇㄙ ㄨㄛㄇ ㄩㄛ ㄎㄍ
  密文3:црв мрж уж езып гёлы сжлы илы сжл ьж нв
  密文4:#←☆ △←◇ 〓◇ ●◆_→ ★◎■_ ↑◇■_ □■_ ↑◇■  ̄◇ ▲☆
  明文:zhe shi li yong ruan jian pan jia mi de(這是利用軟鍵盤加密的)

  用智能ABC或微軟拼音輸入法,把小鍵盤打開,選擇日本平假名字符,輸入“zhe shi”就會出現“まはす にはつ”,如果切換到俄文字符就會出現“црв мрж”……

數字小鍵盤密碼

  數字小鍵盤的字母分布:

  7 8 9
  4 5 6
  1 2 3

  密文:852 74123 741236987 74269 78974123456 7412369
  明文:I L O V E U

  對照小鍵盤,依次打這些字母,看組成的形狀就行了。

  關于Alt+小鍵盤數字的加密方法,參看:百度/Google/網頁字符。

手機鍵盤密碼

  [-----------------圖-----------------]

  根據手機鍵盤上的數字和對應的字母進行加密。

  密文:42 21 71 71 93
  明文:HAPPY

  “42”:4鍵對應的是GHI,GHI第2個就是H;“21”:2鍵對應的是ABC,ABC第1個就是A。

  加密時往往只出現數字鍵,而不給出具體的字母位置,這時解密時就要列舉所有可能的組合,從中選出有意義的單詞來。

  例如密文:42779,這時就要從 GHI ABC PQRS PQRS WXYZ 中提出有意義的字符:HAPPY

  另一種方法是根據形狀加密的,和數字小鍵盤密碼相同,按照密碼里的數字比劃一下就劃出來了。

  比如密文173946,對應的明文是H,17是左邊一豎,39是右邊一豎,46是中間一橫。  



【百度/Google/網頁字符】

  下面解釋一下在百度、Google搜索中文的關鍵詞時,地址欄上出現的奇怪字符。

百度字符(GB2312)
  例如在百度搜索“你好”兩個字,會轉到一個地址為  http://www.baidu.com/s?wd=%C4%E3%BA%C3  的網頁。

  密文(GB碼16進制):%C4%E3%BA%C3
  密文(GB碼十進制):50403 47811
  明文:你好

  百度用的是GB2312的中文編碼,是16進制的。GB2312是標準的簡體中文編碼。“你”字的GB碼為C4E3,“好”字的GB碼為BAC3。“你好”轉換成十進制為50403和47811。

Google字符(URI)
  例如在Google搜索“你好”兩個字,會轉到一個地址為  http://www.google.cn/search?q=%E4%BD%A0%E5%A5%BD  的網頁。

  密文(URI):%E4%BD%A0%E5%A5%BD
  明文:你好

  URI全稱Uniform Resource Identifier(通用資源標識符)。Internet可用的每種資源 - HTML文檔、圖像、視頻片段、程序等 - 由一個通過URI進行定位。

網頁編碼(Unicode)
  論壇里常玩的一個把戲,就是讓你回帖時寫一堆像天書一樣的奇怪字符,而回帖之后就能看到相應的文字。

  密文(Unicode16進制):樓主是個天才
  密文(Unicode10進制):樓主是個天才
  明文:樓主是個天才

  這里使用的是Unicode編碼(十進制),Unicode是一種全世界范圍的文字編碼,網頁都支持這種編碼。

Alt+數字小鍵盤
  按住Alt鍵,在任意文本框中,用鍵盤右邊的數字小鍵盤輸入55021,然后松開Alt鍵,這時你看到了什么?

  用同樣的方法分別輸入“你好”兩個字的GB代碼(十進制)50403、47811,這時你將在文本框中看到這兩個字。

  注意在qq的對話框中,要使用Unicode代碼(十進制)20320、22909。
| 樓主| 發表于 2009-4-3 22:50:51
【MD5】

簡介
  MD5的全稱是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Ronald L. Rivest開發出來,經MD2、MD3和MD4發展而來。

  MD5是一種散列(Hash)算法,散列算法的用途不是對明文加密,讓別人看不懂,而是通過對信息摘要的比對,防止對原文的篡改。通常對散列算法而言,所謂的“破解”,就是找碰撞。

  MD5是把一個任意長度的字節串加密成一個固定長度的大整數(通常是16位或32位),加密的過程中要篩選過濾掉一些原文的數據信息,因此想通過對加密的結果進行逆運算來得出原文是不可能的。

  關于MD5的應用,舉個具體的例子吧。例如你在一個論壇注冊一個賬號,密碼設為“qiuyu21”。此密碼經過MD5運算后,變成“287F1E255D930496EE01037339CD978D”,當你點“提交”按鈕提交時,服務器的數據庫中不記錄你的真正密碼“qiuyu21”,而是記錄那個MD5的運算結果。然后,你在此論壇登錄,登錄時你用的密碼是“qiuyu21”,電腦再次進行MD5運算,把“qiuyu21”轉為“287F1E255D930496EE01037339CD978D”,然后傳送到服務器那邊。這時服務器就把你傳過來的MD5運算結果與數據庫中你注冊時的MD5運算結果比較,如果相同則登錄成功。

  也就是說,服務器只是把MD5運算結果作比較。你也許會問,服務器為什么不用直接對你的密碼“qiuyu21”進行校驗呢?因為如果服務器的數據庫里存的是你的真實密碼,那么黑客只要破解了服務器的數據庫,那么他也就得到了所有人的密碼,他可以用里面的任意密碼進行登錄。但是如果數據庫里面的密碼都是MD5格式的,那么即使黑客得到了“287F1E255D930496EE01037339CD978D”這一串數字,他也不能以此作為密碼來登錄。

  現在再來談談MD5的破解。假設你是攻擊者,已經得到了“287F1E255D930496EE01037339CD978D”這一串數字,那么你怎么能得出我的密碼是“qiuyu21”呢?因為MD5算法是不可逆的,你只能用暴力法(窮舉法)來破解,就是列舉所有可能的字母和數字的排列組合,然后一一進行MD5運算來驗證運算結果是否為“287F1E255D930496EE01037339CD978D”,“qiuyu21”這個密碼是7位英文字符和數字混合,這樣的排列組合的數量是個天文數字,如果一一列舉,那么在你有生之年是看不到了。所以只有使用黑客字典才是一種有效可行的方法,黑客字典可以根據一些規則自動生成。例如“qiuyu21”這個密碼,就是一種常見的組合,規則是:拼音+拼音+數字,拼音總共大約400個,數字以2位數100個來算,這種規則總共約400*400*100=16,000,000種可能,使用優化的算法,估計用1秒就能破解吧。就算考慮到字母開頭大寫或全部大寫的習慣,也只會花大約10幾秒時間。如果是破解你熟悉的某個人的密碼,那么你可以根據你對他的了解來縮小詞典的范圍,以便更快速的破解。這種破解方法在很大程度上依賴于你的運氣。

  最后談談MD5的碰撞。根據密碼學的定義,如果內容不同的明文,通過散列算法得出的結果(密碼學稱為信息摘要)相同,就稱為發生了“碰撞”。因為MD5值可以由任意長度的字符計算出來,所以可以把一篇文章或者一個軟件的所有字節進行MD5運算得出一個數值,如果這篇文章或軟件的數據改動了,那么再計算出的MD5值也會產生變化,這種方法常常用作數字簽名校驗。因為明文的長度可以大于MD5值的長度,所以可能會有多個明文具有相同的MD5值,如果你找到了兩個相同MD5值的明文,那么你就是找到了MD5的“碰撞”。

  散列算法的碰撞分為兩種,強無碰撞和弱無碰撞。還是以前面那個密碼為例:假如你已知“287F1E255D930496EE01037339CD978D”這個MD5值,然后找出了一個單詞碰巧也能計算出和“qiuyu21”相同的MD5值,那么你就找到了MD5的“弱無碰撞”,其實這就意味著你已經破解了MD5。如果不給你指定的MD5值,讓你隨便去找任意兩個相同MD5值的明文,即找“強無碰撞”,顯然要相對容易些了,但對于好的散列算法來說,做到這一點也很不容易了。

  值得一提的是,強無碰撞已經被中國的王小云老師給搞定了,她提出的算法可以在短時間內找到碰撞,在世界上引起了轟動,現在的電腦大約一兩個小時就可以找到一對碰撞。遺憾的是,找到強無碰撞在實際破解中沒有什么真正的用途,所以現在MD5仍然是很安全的。  

MD5算法描述
  對MD5算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯后將生成一個128位散列值。

  在MD5算法中,首先需要對信息進行填充,使其字節長度對512求余的結果等于448。因此,信息的字節長度(Bits Length)將被擴展至N*512+448,即N*64+56個字節(Bytes),N為一個正整數。填充的方法如下,在信息的后面填充一個1和無數個0,直到滿足上面的條件時才停止用0對信息的填充。然后,在在這個結果后面附加一個以64位二進制表示的填充前信息長度。經過這兩步的處理,現在的信息字節長度=N*512+448+64=(N+1)*512,即長度恰好是512的整數倍。這樣做的原因是為滿足后面處理中對信息長度的要求。

  MD5中有四個32位被稱作鏈接變量(Chaining Variable)的整數參數,他們分別為:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。

  當設置好這四個鏈接變量后,就開始進入算法的四輪循環運算。循環的次數是信息中512位信息分組的數目。

  將上面四個鏈接變量復制到另外四個變量中:A到a,B到b,C到c,D到d。

  主循環有四輪(MD4只有三輪),每輪循環都很相似。第一輪進行16次操作。每次操作對a、b、c和d中的其中三個作一次非線性函數運算,然后將所得結果加上第四個變量,文本的一個子分組和一個常數。再將所得結果向右環移一個不定的數,并加上a、b、c或d中之一。最后用該結果取代a、b、c或d中之一。以一下是每次操作中用到的四個非線性函數(每輪一個)。

    F(X,Y,Z) =(X&Y)|((~X)&Z)
    G(X,Y,Z) =(X&Z)|(Y&(~Z))
    H(X,Y,Z) =X^Y^Z
    I(X,Y,Z)=Y^(X|(~Z))
    (&是與,|是或,~是非,^是異或)

  這四個函數的說明:如果X、Y和Z的對應位是獨立和均勻的,那么結果的每一位也應是獨立和均勻的。F是一個逐位運算的函數。即,如果X,那么Y,否則Z。函數H是逐位奇偶操作符。

  假設Mj表示消息的第j個子分組(從0到15):
  << FF(a,b,c,d,Mj,s,ti) 表示 a=b+((a+(F(b,c,d)+Mj+ti)
  << GG(a,b,c,d,Mj,s,ti) 表示 a=b+((a+(G(b,c,d)+Mj+ti)
  << HH(a,b,c,d,Mj,s,ti) 表示 a=b+((a+(H(b,c,d)+Mj+ti)
  << II(a,b,c,d,Mj,s,ti) 表示 a=b+((a+(I(b,c,d)+Mj+ti)  


這四輪(64步)是:

  第一輪
    FF(a,b,c,d,M0,7,0xd76aa478)
    FF(d,a,b,c,M1,12,0xe8c7b756)
    FF(c,d,a,b,M2,17,0x242070db)
    FF(b,c,d,a,M3,22,0xc1bdceee)
    FF(a,b,c,d,M4,7,0xf57c0faf)
    FF(d,a,b,c,M5,12,0x4787c62a)
    FF(c,d,a,b,M6,17,0xa8304613)
    FF(b,c,d,a,M7,22,0xfd469501)
    FF(a,b,c,d,M8,7,0x698098d8)
    FF(d,a,b,c,M9,12,0x8b44f7af)
    FF(c,d,a,b,M10,17,0xffff5bb1)
    FF(b,c,d,a,M11,22,0x895cd7be)
    FF(a,b,c,d,M12,7,0x6b901122)
    FF(d,a,b,c,M13,12,0xfd987193)
    FF(c,d,a,b,M14,17,0xa679438e)
    FF(b,c,d,a,M15,22,0x49b40821)

  第二輪
    GG(a,b,c,d,M1,5,0xf61e2562)
    GG(d,a,b,c,M6,9,0xc040b340)
    GG(c,d,a,b,M11,14,0x265e5a51)
    GG(b,c,d,a,M0,20,0xe9b6c7aa)
    GG(a,b,c,d,M5,5,0xd62f105d)
    GG(d,a,b,c,M10,9,0x02441453)
    GG(c,d,a,b,M15,14,0xd8a1e681)
    GG(b,c,d,a,M4,20,0xe7d3fbc8)
    GG(a,b,c,d,M9,5,0x21e1cde6)
    GG(d,a,b,c,M14,9,0xc33707d6)
    GG(c,d,a,b,M3,14,0xf4d50d87)
    GG(b,c,d,a,M8,20,0x455a14ed)
    GG(a,b,c,d,M13,5,0xa9e3e905)
    GG(d,a,b,c,M2,9,0xfcefa3f8)
    GG(c,d,a,b,M7,14,0x676f02d9)
    GG(b,c,d,a,M12,20,0x8d2a4c8a)

  第三輪
    HH(a,b,c,d,M5,4,0xfffa3942)
    HH(d,a,b,c,M8,11,0x8771f681)
    HH(c,d,a,b,M11,16,0x6d9d6122)
    HH(b,c,d,a,M14,23,0xfde5380c)
    HH(a,b,c,d,M1,4,0xa4beea44)
    HH(d,a,b,c,M4,11,0x4bdecfa9)
    HH(c,d,a,b,M7,16,0xf6bb4b60)
    HH(b,c,d,a,M10,23,0xbebfbc70)
    HH(a,b,c,d,M13,4,0x289b7ec6)
    HH(d,a,b,c,M0,11,0xeaa127fa)
    HH(c,d,a,b,M3,16,0xd4ef3085)
    HH(b,c,d,a,M6,23,0x04881d05)
    HH(a,b,c,d,M9,4,0xd9d4d039)
    HH(d,a,b,c,M12,11,0xe6db99e5)
    HH(c,d,a,b,M15,16,0x1fa27cf8)
    HH(b,c,d,a,M2,23,0xc4ac5665)

  第四輪
    II(a,b,c,d,M0,6,0xf4292244)
    II(d,a,b,c,M7,10,0x432aff97)
    II(c,d,a,b,M14,15,0xab9423a7)
    II(b,c,d,a,M5,21,0xfc93a039)
    II(a,b,c,d,M12,6,0x655b59c3)
    II(d,a,b,c,M3,10,0x8f0ccc92)
    II(c,d,a,b,M10,15,0xffeff47d)
    II(b,c,d,a,M1,21,0x85845dd1)
    II(a,b,c,d,M8,6,0x6fa87e4f)
    II(d,a,b,c,M15,10,0xfe2ce6e0)
    II(c,d,a,b,M6,15,0xa3014314)
    II(b,c,d,a,M13,21,0x4e0811a1)
    II(a,b,c,d,M4,6,0xf7537e82)
    II(d,a,b,c,M11,10,0xbd3af235)
    II(c,d,a,b,M2,15,0x2ad7d2bb)
    II(b,c,d,a,M9,21,0xeb86d391)

  常數ti可以如下選擇:

  在第i步中,ti是4294967296*abs(sin(i))的整數部分,i的單位是弧度。(4294967296等于2的32次方)所有這些完成之后,將A、B、C、D分別加上a、b、c、d。然后用下一分組數據繼續運行算法,最后的輸出是A、B、C和D的級聯。

  當你按照我上面所說的方法實現MD5算法以后,你可以用以下幾個信息對你做出來的程序作一個簡單的測試,看看程序有沒有錯誤。

    MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
    MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
    MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
    MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
    MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
    MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = d174ab98d277d9f5a5611c2c9f419d9f
    MD5 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 57edf4a22be3c955ac49da2e2107b67a
MD5的安全性
  MD5相對MD4所作的改進:

  1. 增加了第四輪;
  2. 每一步均有唯一的加法常數;
  3. 為減弱第二輪中函數G的對稱性從(X&Y)|(X&Z)|(Y&Z)變為(X&Z)|(Y&(~Z));
  4. 第一步加上了上一步的結果,這將引起更快的雪崩效應;
  5. 改變了第二輪和第三輪中訪問消息子分組的次序,使其更不相似;
  6. 近似優化了每一輪中的循環左移位移量以實現更快的雪崩效應。各輪的位移量互不相同。
————————以上內容均轉自《灰灰的密碼學筆記》特此說明!!
| 樓主| 發表于 2009-4-3 22:52:23
本帖最后由 冰客 于 2009-4-3 22:53 編輯
然后是在《達芬奇密碼》中出現的埃特巴什碼

埃特巴什碼是一個系統:最后一個字母代表第一個字母,倒數第二個字母代表第二個字母。  

在羅馬字母表中,它是這樣出現的:  



常文:a b c d e f g h i j k l m n o p q r s t u v w x y z  

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




這種密碼是由熊斐特博士發現的。熊斐特博士為庫姆蘭《死海古卷》的最初研究者之一,他在《圣經》歷史研究方面最有名氣的著作是《逾越節的陰謀》。他運用這種密碼來研究別人利用其他方法不能破解的那些經文。這種密碼被運用在公元1世紀的艾賽尼/薩多吉/拿撒勒教派的經文中,用以隱藏姓名。其實早在公元前500年,它就被抄經人用來寫作《耶利米書》〔1〕耶利米是活動在公元前627-前586年間的猶太先知,圣經舊約書中有許多關于他的記載。在他離世前,猶太領土已被巴比倫人占領。〔1〕。它也是希伯來文所用的數種密碼系統之一。  

白金特、雷伊和林肯在《彌賽亞的遺產》中寫道,熊斐特博士于《艾賽尼派的奧德賽》一書中描述他如何對圣殿騎士們崇拜的鮑芙默神癡迷,又如何用埃特巴什碼分析這個詞。令他驚奇的是,破譯出的詞“Sophia”為希臘語中的“智慧”。  

在希伯來語中,“Baphomet”一詞拼寫如下——要記住,希伯來語句必須從右向左讀:  

〔 taf 〕 〔 mem 〕 〔 vav 〕 〔 pe 〕 〔 bet 〕  

將埃特巴什碼用于上述字母,熊斐特博士得到如下結果:  

〔 alef 〕 〔 yud 〕 〔 pe 〕 〔 vav 〕 〔 shin 〕  

即為用希伯來語從右向左書寫的希臘詞“Sophia”。  

Sophia的詞義不僅限于“智慧”。它還是一位女神的名字——這位女神照說應該是上帝的新娘。許多人相信,圣殿騎士們崇拜這位女神。〔1〕作者引用的是諾斯替學派的神話:“不可知解”的至尊上帝,“源化”出最早的幾位亞神,最后一位就是索菲亞——“智慧”。她極求得到對上帝“神質”的“真知”——她名字第二意義的來源,而這種不合神性的欲望“孕生”了邪神,即創造宇宙的另一位“上帝”。諾斯替派將他等同于舊約中的上帝,來解釋亞當夏娃墮降塵間和大洪水的事件。〔1〕  

圣殿騎士們通曉埃特巴什碼的事實,強烈表明有些來自一個拿撒勒教派的人置身于圣殿騎士中間。  

丹·布朗關于英語是“最純潔的”語言的觀念可能是空想的,但并不是什么新理論。萊納堡附近有個叫做萊納浴泉的村莊,那里的神父亨利·布德寫過一本名為《真實的凱爾特語》的書,也聲稱英語是一種神圣的語言,或許在“巴比倫塔”〔2〕用方舟拯救人類的諾亞,有一支后代在巴比魯尼亞定居。他們在史納爾平原建造高塔,試圖攀登天界。惱怒的上帝分化了在此之前統一使用的語言,而交流不通引發的混亂和爭執使人前功盡棄。〔2〕墮毀前就已得到使用。據說,這本書從字面上是不能理解的,它是用密碼寫成的,傳達一個不同的信息。我們還應該記住,與其他的一些歐洲語言一樣,英語的許多詞匯源于拉丁。正如翠茜·特威曼在《達戈貝特復仇記》雜志中指出的那樣,英語因為有26個字母,可以完美地用于埃特巴什碼。其他歐洲語言所用的字母則不成偶數。此外,她始終認為郇山隱修會偏愛英語
317
| 發表于 2009-4-3 22:54:46
哇,好長啊。看不完。好好研究下。
| 發表于 2009-4-4 08:30:26
慢慢學習!!!!!!!!!!!!!!!!!!!!!
| 發表于 2009-4-6 10:40:20
密鑰不懂啊!!
| 發表于 2009-4-11 19:25:49
很想學   不過太長了  
| 發表于 2009-7-24 13:19:27
頻率的那個……不懂啊……
返回版塊
123
尚未登錄
您需要登錄后才可以回帖 登錄 | 加入學院