資源簡(jiǎn)介
AES對(duì)稱(chēng)加密解密文件工程:
一、AES 介紹
二、AES 算法原理
工程一)密鑰擴(kuò)展程序的 C++ 代碼(AES-128)
工程二)C++ 實(shí)現(xiàn) AES 的加密和解密算法
工程三)C++實(shí)現(xiàn)了對(duì)文件的加密和解密

代碼片段和文件信息
//密鑰擴(kuò)展程序的?C++?代碼(AES-128)
#include???
#include???
using?namespace?std;???
typedef?bitset<8>?byte;??
typedef?bitset<32>?word;??
??
const?int?Nr?=?10;??//?AES-128需要?10?輪加密??
const?int?Nk?=?4;???//?Nk?表示輸入密鑰的?word?個(gè)數(shù)??
??
byte?S_Box[16][16]?=?{??
????{0x63?0x7C?0x77?0x7B?0xF2?0x6B?0x6F?0xC5?0x30?0x01?0x67?0x2B?0xFE?0xD7?0xAB?0x76}??
????{0xCA?0x82?0xC9?0x7D?0xFA?0x59?0x47?0xF0?0xAD?0xD4?0xA2?0xAF?0x9C?0xA4?0x72?0xC0}??
????{0xB7?0xFD?0x93?0x26?0x36?0x3F?0xF7?0xCC?0x34?0xA5?0xE5?0xF1?0x71?0xD8?0x31?0x15}??
????{0x04?0xC7?0x23?0xC3?0x18?0x96?0x05?0x9A?0x07?0x12?0x80?0xE2?0xEB?0x27?0xB2?0x75}??
????{0x09?0x83?0x2C?0x1A?0x1B?0x6E?0x5A?0xA0?0x52?0x3B?0xD6?0xB3?0x29?0xE3?0x2F?0x84}??
????{0x53?0xD1?0x00?0xED?0x20?0xFC?0xB1?0x5B?0x6A?0xCB?0xBE?0x39?0x4A?0x4C?0x58?0xCF}??
????{0xD0?0xEF?0xAA?0xFB?0x43?0x4D?0x33?0x85?0x45?0xF9?0x02?0x7F?0x50?0x3C?0x9F?0xA8}??
????{0x51?0xA3?0x40?0x8F?0x92?0x9D?0x38?0xF5?0xBC?0xB6?0xDA?0x21?0x10?0xFF?0xF3?0xD2}??
????{0xCD?0x0C?0x13?0xEC?0x5F?0x97?0x44?0x17?0xC4?0xA7?0x7E?0x3D?0x64?0x5D?0x19?0x73}??
????{0x60?0x81?0x4F?0xDC?0x22?0x2A?0x90?0x88?0x46?0xEE?0xB8?0x14?0xDE?0x5E?0x0B?0xDB}??
????{0xE0?0x32?0x3A?0x0A?0x49?0x06?0x24?0x5C?0xC2?0xD3?0xAC?0x62?0x91?0x95?0xE4?0x79}??
????{0xE7?0xC8?0x37?0x6D?0x8D?0xD5?0x4E?0xA9?0x6C?0x56?0xF4?0xEA?0x65?0x7A?0xAE?0x08}??
????{0xBA?0x78?0x25?0x2E?0x1C?0xA6?0xB4?0xC6?0xE8?0xDD?0x74?0x1F?0x4B?0xBD?0x8B?0x8A}??
????{0x70?0x3E?0xB5?0x66?0x48?0x03?0xF6?0x0E?0x61?0x35?0x57?0xB9?0x86?0xC1?0x1D?0x9E}??
????{0xE1?0xF8?0x98?0x11?0x69?0xD9?0x8E?0x94?0x9B?0x1E?0x87?0xE9?0xCE?0x55?0x28?0xDF}??
????{0x8C?0xA1?0x89?0x0D?0xBF?0xE6?0x42?0x68?0x41?0x99?0x2D?0x0F?0xB0?0x54?0xBB?0x16}??
};??
??
//?輪常數(shù),密鑰擴(kuò)展中用到。(AES-128只需要10輪)??
word?Rcon[10]?=?{0x01000000?0x02000000?0x04000000?0x08000000?0x10000000???
?????????????????0x20000000?0x40000000?0x80000000?0x1b000000?0x36000000};??
??
/**?
?*?將4個(gè)?byte?轉(zhuǎn)換為一個(gè)?word.?
?*/??
word?Word(byte&?k1?byte&?k2?byte&?k3?byte&?k4)??
{??
????word?result(0x00000000);??
????word?temp;??
????temp?=?k1.to_ulong();??//?K1??
????temp?<<=?24;??
????result?|=?temp;??
????temp?=?k2.to_ulong();??//?K2??
????temp?<<=?16;??
????result?|=?temp;??
????temp?=?k3.to_ulong();??//?K3??
????temp?<<=?8;??
????result?|=?temp;??
????temp?=?k4.to_ulong();??//?K4??
????result?|=?temp;??
????return?result;??
}??
??
/**?
?*??按字節(jié)?循環(huán)左移一位?
?*??即把[a0?a1?a2?a3]變成[a1?a2?a3?a0]?
?*/??
word?RotWord(word&?rw)??
{??
????word?high?=?rw?<8;??
????word?low?=?rw?>>?24;??
????return?high?|?low;??
}??
??
/**?
?*??對(duì)輸入word中的每一個(gè)字節(jié)進(jìn)行S-盒變換?
?*/??
word?SubWord(word&?sw)??
{??
????word?temp;??
????for(int?i=0;?i<32;?i+=8)??
????{??
????????int?row?=?sw[i+7]*8?+?sw[i+6]*4
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件???????4058??2018-11-05?09:38??AES\AES_demo\AES_demo\AES_demo.vcxproj
?????文件????????942??2018-11-05?09:12??AES\AES_demo\AES_demo\AES_demo.vcxproj.filters
?????文件?????????57??2018-11-05?09:13??AES\AES_demo\AES_demo\Debug\AES_demo.lastbuildstate
?????文件?????????95??2018-11-05?10:28??AES\AES_demo\AES_demo\Debug\AES_demo.log
?????文件???????1292??2018-11-05?10:28??AES\AES_demo\AES_demo\Debug\secret_key_extend.Build.CppClean.log
?????文件???????4508??2018-11-05?09:35??AES\AES_demo\AES_demo\main.cpp
?????文件???????1859??2018-11-05?10:24??AES\AES_demo\AES_demo.sln
????..A..H.?????30720??2018-11-05?10:29??AES\AES_demo\AES_demo.v11.suo
?????文件??????19456??2018-11-05?10:18??AES\AES_demo\Debug\encode_decode_file.pdb
?????文件???????1295??2018-11-05?10:28??AES\AES_demo\encryption_decode\Debug\encryption_decode.Build.CppClean.log
?????文件?????????95??2018-11-05?10:28??AES\AES_demo\encryption_decode\Debug\encryption_decode.log
?????文件???????4017??2018-11-05?09:42??AES\AES_demo\encryption_decode\encryption_decode.vcxproj
?????文件????????942??2018-11-05?09:42??AES\AES_demo\encryption_decode\encryption_decode.vcxproj.filters
?????文件??????13706??2018-11-05?09:43??AES\AES_demo\encryption_decode\main.cpp
?????文件??????15908??2018-09-03?15:30??AES\AES_demo\EN_DE_FILE\190.jpg
?????文件??????15904??2018-11-05?10:24??AES\AES_demo\EN_DE_FILE\cipher.txt
?????文件???????1148??2018-11-05?10:28??AES\AES_demo\EN_DE_FILE\Debug\EN_DE_FILE.Build.CppClean.log
?????文件?????????95??2018-11-05?10:28??AES\AES_demo\EN_DE_FILE\Debug\EN_DE_FILE.log
?????文件??????15904??2018-11-05?10:24??AES\AES_demo\EN_DE_FILE\decode_bird.jpg
?????文件???????4010??2018-11-05?10:24??AES\AES_demo\EN_DE_FILE\EN_DE_FILE.vcxproj
?????文件????????942??2018-11-05?10:24??AES\AES_demo\EN_DE_FILE\EN_DE_FILE.vcxproj.filters
?????文件??????13568??2018-11-05?10:24??AES\AES_demo\EN_DE_FILE\main.cpp
????.......?????34530??2018-11-05?09:09??AES\AES加密算法的C++實(shí)現(xiàn).txt
?????目錄??????????0??2018-11-05?10:28??AES\AES_demo\AES_demo\Debug
?????目錄??????????0??2018-11-05?10:28??AES\AES_demo\encryption_decode\Debug
?????目錄??????????0??2018-11-05?10:28??AES\AES_demo\EN_DE_FILE\Debug
?????目錄??????????0??2018-11-05?09:12??AES\AES_demo\AES_demo
?????目錄??????????0??2018-11-05?10:28??AES\AES_demo\Debug
?????目錄??????????0??2018-11-05?09:43??AES\AES_demo\encryption_decode
?????目錄??????????0??2018-11-05?10:24??AES\AES_demo\EN_DE_FILE
............此處省略5個(gè)文件信息
評(píng)論
共有 條評(píng)論