當前位置:編程學習大全網 - 編程語言 - 密碼學基礎(二):對稱加密

密碼學基礎(二):對稱加密

使用相同的密鑰進行加密和解密稱為對稱加密。

DES:已經淘汰了。

3DES:相對於DES來說是加強了,但是還是有很大的風險。

AES:壹種新的對稱加密算法。

特性決定了使用場景,對稱加密有以下特點:

速度快,可用於高頻加密場景。

使用相同的密鑰進行加密和解密。

可以選擇128、192、256位為壹組的加密方式,加密輸出值為所選組位數的倍數。密鑰長度不同,推薦加密輪數不同,加密強度更強。

例如:

AES加密結果的長度由原始字符串長度決定:壹個字符是1byte=4bit,壹個字符串是n+1byte。因為最後壹位是' \0 ',所以當字符串長度小於或等於15時,AES128的結果是32位。

對稱加密由於速度快,被廣泛應用於各種加密場所。但由於它需要傳遞密鑰,壹旦密鑰被截獲或泄露,其加密就會被完全破解,所以AES壹般與RSA配合使用。

因為RSA不需要傳遞密鑰,加密速度慢,所以AES中壹般用RSA對鎖使用的密鑰進行加密,然後傳遞密鑰,保證密鑰的安全性。密鑰成功傳遞後,在會話中壹直使用AES對信息進行加密,解決了AES和RSA的缺點,發揮了它們的優勢。相對經典的例子是HTTPS加密,這將在下壹篇文章中研究。

本文對ECB模式下的AES算法進行了粗略的說明,每壹步的詳細算法不再贅述。

將128比特的明文分成16字節的明文矩陣,然後將明文矩陣轉化為狀態矩陣。以“abcdefghijklmnop”的明文為例:

類似地,128位密鑰被分成16組狀態矩陣。與明文不同的是,密文會按列生成原始的4x8x4=128個密鑰,即壹組有四個元素,每個元素由每列四個密鑰組成,其中矩陣中的每個密鑰為1字節,即8位。

在生成w[0],w[1],w[2]和w[3]的初始原始密鑰後,通過密鑰排列函數將密鑰矩陣展開為W[0],W[1],…,W[43]的44分量序列。序列的前四個元素w [0]、w [1]、w [2]和w [3]為原始密鑰,用於加密操作中的初始密鑰添加,後40個字分為10組,每組由四個32位字段組成,共* * 128位。

之所以單獨提出這壹步,是因為ECB和CBC模式的主要區別就在這壹步。

ECB模式下,初始密鑰擴展生成密鑰組(w0-w43)後,明文根據當前輪數取出w[i,i+3]進行加密運算。

在CBC模式下,上壹輪密文(明文加密後的值)和當前明文在加密操作前進行異或運算。如圖所示:

根據不同位數的分組,官方推薦的加密輪次有:

1輪的輪操作加密與第九輪的輪函數相同,包括字節替換、行位移、列混合和輪密鑰添加四種操作。最後壹次叠代不執行列混合。

當第壹組加密完成時,後續組循環執行加密操作,直到所有組完成加密操作。

通常,結果將被轉換為base64位。此時,解碼操作應該以base64編碼的方式執行,而不是iOS中的UTF-8。

Base64是壹種編碼方式,常用語言傳輸8bit字節碼。其編碼原理如下:

將原始數據按3字節為壹組,即3×8 = 24位。

將3×8 = 24的數據分成4×6 = 24的數據,即分成4組。

四組中的數據在高位補了兩個零,也就是8x4=32,所以原始數據增加了三分之壹。

根據base64編碼表,轉換數據。如果要編碼的二進制數據不是3的倍數,最後會剩下1或2個字節。Base64在末尾用\x00字節來補,然後在編碼末尾加上1或2 =符號,表示補了多少字節。解碼時會自動刪除。

舉個栗子:男人最後的結果是TWFu。

計算機中所有的數據都是以0和1的二進制存儲,所有的字符都經過ascii表轉換,然後以相應的語言顯示出來。然而,在ascii表中有許多不可見的字符。這些隱形字符在數據傳輸過程中可能會經過不同硬件上的各種類型的路由,在轉義時容易出錯。所以指定了64個可見字符(a-z,A-Z,0-9,+,/),所有二進制數據經過base64轉碼後可見。

ECB和CBC是兩種加密工作模式。相同點是在加密開始前,明文和密文按照128/192/256分組。以128比特為例,明文和密文都分為16組,每組1字節為8比特。

在ECB的工作模式下,每組的明文和密文是相互獨立的,每組的明文通過加密該組的密文生成密文,不影響其他組。

在CBC工作模式下,後壹組的明文在加密前與前壹組的密文進行異或運算,然後用該組的密文進行加密,生成密文。

加密簡單的數據包。將明文和密文分成若幹組後,用密文加密明文生成密文。

加拿大廣播公司

加密:

解密:

  • 上一篇:傳統地震去噪算法實戰(二)——構造導向濾波去噪
  • 下一篇:嵌入式系統設計要掌握哪些知識?
  • copyright 2024編程學習大全網