• 大小: 77KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: C/C++
  • 标签: AES  

资源简介

AES对称加密解密文件工程: 一、AES 介绍 二、AES 算法原理 工程一)密钥扩展程序的 C++ 代码(AES-128) 工程二)C++ 实现 AES 的加密和解密算法 工程三)C++实现了对文件的加密和解密

资源截图

代码片段和文件信息

//密钥扩展程序的 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 个数  
  
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}  
};  
  
// 轮常数,密钥扩展中用到。(AES-128只需要10轮)  
word Rcon[10] = {0x01000000 0x02000000 0x04000000 0x08000000 0x10000000   
                 0x20000000 0x40000000 0x80000000 0x1b000000 0x36000000};  
  
/** 
 * 将4个 byte 转换为一个 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;  
}  
  
/** 
 *  按字节 循环左移一位 
 *  即把[a0 a1 a2 a3]变成[a1 a2 a3 a0] 
 */  
word RotWord(word& rw)  
{  
    word high = rw << 8;  
    word low = rw >> 24;  
    return high | low;  
}  
  
/** 
 *  对输入word中的每一个字节进行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

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       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++实现.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个文件信息

评论

共有 条评论