AES密碼演算法C實現

2021-08-28 18:51:11 字數 1043 閱讀 6659

做實驗並寫實驗報告。修改例程cryptodemo.cpp為encfile.cpp :

從命令列接受3個字串型別的引數:引數1,引數2,引數 3。

引數1=encrypt表示加密,

引數2=decrypt表示解密;

引數2為待加密 、解密的檔名;

引數3為密碼。

1、修改映象源為科大的,然後更新所有應用

sudo vi /etc/apt/sources.list

將這個檔案清空、複製科大的映象位址進去

sudo apt-get update

2、安裝openssl庫

sudo apt-get install libssl-dev

3、編譯encfile.cpp

出現了這個問題,經查詢相關資料,是由於gcc 與 g++版本不一的原因。

解決方案是 安裝gcc的依賴包使得版本一致

sudo apt-get install build-essential

然後重新編譯encfile.cpp,編譯成功

執行編譯後的檔案得到預輸入的加解密結果

4、修改程式,使能夠接受控制台輸入的明文和金鑰,然後輸出加密後的密文。

現在程式可以讀取檔案:在同一目錄下,info.txt中存放明文「hello ustc」

secret.txt中存放金鑰。編譯執行程式得到結果如下

5、修改程式,使能夠加密解密分別在乙個單獨的命令中。

info.txt存放的是明文,密文存放在encrypted.txt中。

加密明文

這時已經出現了encrypted.txt這個檔案

然後解密這個密文,使用的還是加密時候用到的金鑰。

獲得的結果和info.txt中一致。

本實驗演算法採用aes分組對稱密碼體制,金鑰長度為256位,分組長度為126位。在加密模組中實現了金鑰的擴充套件(通過aes_set_encrypt_key函式將金鑰擴充套件為256位)、初始輪、重複輪(16輪變換)和最終輪。最終得到加密後的密文,再將密文通過檔案操作輸出。

在解密模組,同樣要首先對金鑰進行擴充套件,然後進行16輪的變化,最終得到明文。

AES密碼演算法

此演算法,是以金鑰128位為例,輸入輸出都是十六進製制。測試資料 明文 32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34 金鑰 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c 密文 39 25 84 1d ...

密碼演算法詳解 AES

美國國家標準技術研究所在2001年發布了高階加密標準 aes aes是乙個對稱分組密碼演算法,旨在取代des成為廣泛使用的標準。根據使用的密碼長度,aes最常見的有3種方案,用以適應不同的場景要求,分別是aes 128 aes 192和aes 256。本文主要對aes 128進行介紹,另外兩種的思路...

密碼演算法詳解 AES

美國國家標準技術研究所在2001年發布了高階加密標準 aes aes是乙個對稱分組密碼演算法,旨在取代des成為廣泛使用的標準。根據使用的密碼長度,aes最常見的有3種方案,用以適應不同的場景要求,分別是aes 128 aes 192和aes 256。本文主要對aes 128進行介紹,另外兩種的思路...