跳到主要內容

發表文章

目前顯示的是有「substitution cipher vs transposition cipher」標籤的文章

Substitution Cipher vs Transposition Cipher:混淆與擴散的加密核心原理解析

加密學的兩大基石—— Substitution Cipher(替換密碼) 與 Transposition Cipher(換位密碼) ——分別對應 Shannon 所定義的「混淆」與「擴散」原則,幾乎所有現代對稱加密演算法都建立在兩者的組合之上。 Substitution Cipher:以替換實現混淆(Confusion) 替換密碼的核心操作是 以新符號取代原始符號 ,使密文與明文之間的對應關係趨於複雜。最經典的範例是 Caesar Cipher ,每個字母固定位移 3 位(A → D、B → E)。更進階的 Vigenère Cipher 引入多組金鑰,使相同明文字母在不同位置產生不同密文,大幅增加頻率分析的難度。在現代演算法中,AES 的 SubBytes 步驟 即是替換操作的直接體現——透過 S-Box 非線性映射,徹底模糊金鑰與密文之間的統計關聯,達成 Shannon 所定義的混淆目標。 Transposition Cipher:以重排實現擴散(Diffusion) 換位密碼 不改變字母本身,而是重新排列其位置 ,使明文的統計特性均勻擴散至整段密文。典型範例為 Rail Fence Cipher ,明文字母依鋸齒型路徑排列後再逐行讀出。另一個常見形式是 Columnar Transposition ,將明文填入矩陣後依金鑰指定的列順序讀取輸出。現代演算法中,AES 的 ShiftRows 與 MixColumns 步驟即屬換位與擴散機制——單一明文位元的變動將影響整個區塊的輸出,此即雪崩效應(Avalanche Effect)的來源。 # Substitution: Caesar Cipher (位移 3) sub = lambda text: ''.join(chr((ord(c) - 65 + 3) % 26 + 65) for c in text) # Transposition: Columnar (依索引重排) trans = lambda text, key: ''.join(text[i] for i in sorted(range(len(text)), key=lambda x: key[x % len(key)])) print(sub("HELLO")) ...