资源简介
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个文件信息
- 上一篇:大整数乘法全解绝对可运行C++
- 下一篇:合并一个文件夹中的所有文件.cpp
相关资源
- AES加密可加密文件
- AES5种加密模式源码C语言
- AES密码学课程设计带报告
- AES加密算法(C++实现)
- AES 加密算法接口及演示程序
- AES加密算法c语言实现代码
- AES128/192/256 C语言实现AES加密/解密实测
- AES加密算法C语言实现,有测试代码,
- 常用加密算法AES、RSA、DES、MD5、TEA、
- AES 128位加解密C++源码(加盐)
- AES详细源码C语言实现带注释
- AES算法的C语言版本
- AES/ECB/PKCS5Padding C++实现
- C语言环境下的AES加密算法,支持128位
- AES快速实现,加密速度大约1.4G/s,不
- AES多种加密解密方式C语言方式实现
- aes密钥扩展C语言实现
- C语言 3DES、AES、RC6、TEA、RSA、MD5、S
- C语言实现的AES加密解密
- AES、DES加密算法C语言源码
- AES 加解密c++
- AES s盒生成代码
- AES加密解密系统 VC++6.0 实现
- AES密码算法C语言实现
- C语言 stm32 AES加密解密
- AES单片机加密解密 C语言源代码
- aes算法实现C++)
- AES任意文件长度加解密C语言实现
- aes加密算法matlab
- AES128 C语言实现源码及应用例程
评论
共有 条评论