资源简介
RSA非对称加密是基于数字证书的加密体系中的一种加密方式。当发送信息时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这样,信息就可以安全无误地到达目的地了,即使被第三方截获,由于没有相应的私钥,也无法进行解密。通过数字的手段保证加密过程是一个不可逆过程,即只有用私有密钥才能解密。

代码片段和文件信息
#include “StdAfx.h“ //注意在此 #include “Aes.h“不可以放在前面,否则出错,
#include “AesEncrypt.h“
CAesEncrypt::CAesEncrypt()
{
}
CAesEncrypt::~CAesEncrypt()
{
}
CAesEncrypt::CAesEncrypt(int keysize unsigned char* keyBytes)
{
SetNbNkNr(keysize); //设置密钥块数,轮数
memcpy(keykeyByteskeysize); //字符串拷贝函数,把keyBytes的keysize个字符复制到key中
KeyExpansion(); //密钥扩展,必须提前做的初始化
}
void CAesEncrypt::SetNbNkNr(int keySize)
{
Nb = 4;
if(keySize=Bits128)
{
Nk=4; //4*4字节,128位密钥,10轮加密
Nr=10;
}
else if(keySize=Bits192)
{
Nk=6; //6*4字节,192位密钥,12轮加密
Nr=12;
}
else if(keySize=Bits256)
{
Nk=8; //8*4字节,256位密钥,14轮加密
Nr=14;
}
}
void CAesEncrypt::KeyExpansion()
{
memset(w016*15);
for(int row=0;row {
w[4*row+0] = key[4*row];
w[4*row+1] = key[4*row+1];
w[4*row+2] = key[4*row+2];
w[4*row+3] = key[4*row+3];
}
byte* temp = new byte[4];
for(int row=Nk;row<4*(Nr+1);row++)
{
temp[0]=w[4*row-4]; //当前列的前一列
temp[1]=w[4*row-3];
temp[2]=w[4*row-2];
temp[3]=w[4*row-1];
if(row%Nk==0) //逢nk时,对当前列的前一列作特殊处理
{
temp=SubWord(RotWord(temp)); //先移位,再代换,最后和轮常量异或
temp[0] = (byte)( (int)temp[0] ^ (int) AesRcon[4*(row/Nk)+0] );
temp[1] = (byte)( (int)temp[1] ^ (int) AesRcon[4*(row/Nk)+1] );
temp[2] = (byte)( (int)temp[2] ^ (int) AesRcon[4*(row/Nk)+2] );
temp[3] = (byte)( (int)temp[3] ^ (int) AesRcon[4*(row/Nk)+3] );
}
else if ( Nk > 6 && (row % Nk == 4) ) //这个还没有搞清楚
{
temp = SubWord(temp);
}
// w[row] = w[row-Nk] xor temp
w[4*row+0] = (byte) ( (int) w[4*(row-Nk)+0] ^ (int)temp[0] );
w[4*row+1] = (byte) ( (int) w[4*(row-Nk)+1] ^ (int)temp[1] );
w[4*row+2] = (byte) ( (int) w[4*(row-Nk)+2] ^ (int)temp[2] );
w[4*row+3] = (byte) ( (int) w[4*(row-Nk)+3] ^ (int)temp[3] );
} // for loop
}
//密钥移位函数
unsigned char* CAesEncrypt::RotWord(unsigned char* word)
{
byte* temp = new byte[4];
temp[0] = word[1];
temp[1] = word[2];
temp[2] = word[3];
temp[3] = word[0];
return temp;
}
//密钥字代换函数
unsigned char* CAesEncrypt::SubWord(unsigned char* word)
{
byte* temp = new byte[4];
for(int j=0;j<4;j++)
{
temp[j] = AesSbox[16*(word[j] >> 4)+(word[j] & 0x0f)]; //实际上也可以写成AesSbox[[j]];因为两者相等
}
return temp;
}
//Aes加密函数
void CAesEncrypt::Cipher(unsigned char* input unsigned char* output)
{
memset(&State[0][0]016);
for(int i=0;i<4*Nb;i++) //这里是先写列后写行的,即输入是一列一列的进来的
{
State[i%4][i/4]=input[i]; //换成先写行后写列也是可以的,只要在输出时也是这样就可以了
}
AddRoundKey(0); //轮密钥加
for (int round = 1; round <= (Nr - 1); round++) // main round loop
{
SubBytes(); //字节代换
ShiftRows(); //行移位
MixColumns(); //列混淆
AddRoundKey(round); //轮密钥加
} // main round loop
SubBytes(); //字节代换
ShiftRows(); //行移位
AddRoundKey(Nr); //轮密钥加
// output = state
for (int
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 20 2011-03-08 12:38 vs非对称加密\Bin\Main\test.txt
文件 885 2011-03-07 12:47 vs非对称加密\Main.sln
..A..H. 33280 2011-04-03 22:58 vs非对称加密\Main.suo
文件 9056 2011-03-14 11:57 vs非对称加密\Source\Main\AesEncrypt.cpp
文件 5762 2011-03-14 11:57 vs非对称加密\Source\Main\AesEncrypt.h
文件 15764 2011-03-10 17:53 vs非对称加密\Source\Main\BigInt.cpp
文件 2457 2011-03-10 17:52 vs非对称加密\Source\Main\BigInt.h
文件 6453 2011-03-14 13:39 vs非对称加密\Source\Main\Main.cpp
文件 5091 2011-03-11 17:55 vs非对称加密\Source\Main\Main.vcproj
文件 1427 2011-03-14 13:40 vs非对称加密\Source\Main\Main.vcproj.MHTX-0-130.HxUser.user
文件 1427 2011-04-03 22:58 vs非对称加密\Source\Main\Main.vcproj.YINMENG-9C43A76.隐梦.user
文件 1165 2011-03-07 12:46 vs非对称加密\Source\Main\ReadMe.txt
文件 2068 2011-03-14 13:23 vs非对称加密\Source\Main\RsaEncrypt.cpp
文件 1734 2011-03-14 13:23 vs非对称加密\Source\Main\RsaEncrypt.h
文件 209 2011-03-07 12:46 vs非对称加密\Source\Main\stdafx.cpp
文件 399 2011-03-14 11:13 vs非对称加密\Source\Main\stdafx.h
文件 498 2011-03-07 12:46 vs非对称加密\Source\Main\targetver.h
文件 645 2011-03-08 20:02 vs非对称加密\Source\RSA最简单的32位版\Main.cpp
文件 3218 2011-03-09 10:51 vs非对称加密\Source\RSA最简单的32位版\RsaEncrypt.cpp
文件 1717 2011-03-09 09:43 vs非对称加密\Source\RSA最简单的32位版\RsaEncrypt.h
文件 209 2011-03-07 12:46 vs非对称加密\Source\RSA最简单的32位版\stdafx.cpp
文件 334 2011-03-08 13:48 vs非对称加密\Source\RSA最简单的32位版\stdafx.h
文件 12239 2011-03-08 13:43 vs非对称加密\Source\初期版本RSA_128位\版本2011-3-11 AES+RSA1024之前最新Main\AesEncrypt.cpp
文件 6391 2011-03-08 13:43 vs非对称加密\Source\初期版本RSA_128位\版本2011-3-11 AES+RSA1024之前最新Main\AesEncrypt.h
文件 15764 2011-03-10 17:53 vs非对称加密\Source\初期版本RSA_128位\版本2011-3-11 AES+RSA1024之前最新Main\BigInt.cpp
文件 2457 2011-03-10 17:52 vs非对称加密\Source\初期版本RSA_128位\版本2011-3-11 AES+RSA1024之前最新Main\BigInt.h
文件 1956 2011-03-10 18:01 vs非对称加密\Source\初期版本RSA_128位\版本2011-3-11 AES+RSA1024之前最新Main\Main.cpp
文件 5091 2011-03-10 16:18 vs非对称加密\Source\初期版本RSA_128位\版本2011-3-11 AES+RSA1024之前最新Main\Main.vcproj
文件 1427 2011-03-10 18:12 vs非对称加密\Source\初期版本RSA_128位\版本2011-3-11 AES+RSA1024之前最新Main\Main.vcproj.MHTX-0-130.HxUser.user
文件 1165 2011-03-07 12:46 vs非对称加密\Source\初期版本RSA_128位\版本2011-3-11 AES+RSA1024之前最新Main\ReadMe.txt
............此处省略81个文件信息
- 上一篇:DDA直线插补
- 下一篇:struts-config.xm
l配置详解.txt
相关资源
- The direction of synaptic plasticity mediated
- C 大整数RSA加密
- DXperienceUniversal 10.1.6(2010年8月13日版
- RSA算法源码
- RSA AES DES ECC加密算法源码
- 易语言RSA加解密源码
- Anti-biofilm Activity of Resveratrol and Ursol
- IBM Rational Software Architect 9.0破解文件
- Universal Extractor(万能文件解包工具)
- DXperienceUniversal-11.1.7.part06
- DXperienceUniversal-11.1.7.part08
- DXperienceUniversal-11.1.7.part14
- DXperienceUniversal-11.1.7.part15
- DXperienceUniversal-11.1.7.part10
- DXperienceUniversal-11.1.7.part13
- DXperienceUniversal-11.1.7.part03
- DXperienceUniversal-11.1.7.part02
- DXperienceUniversal-11.1.7.part09
- DXperienceUniversal-11.1.7.part19
- DXperienceUniversal-11.1.7.part12
- DXperienceUniversal-11.1.7.part18
- DXperienceUniversal-11.1.7.part16
- DXperienceUniversal-11.1.7.part20
- DXperienceUniversal-11.1.7.part07
- DXperienceUniversal-11.1.7.part17
- DXperienceUniversal-11.1.7.part04
- IBM 2U Universal Tape Autoloader产品手册
- IBM 4U Universal Tape Library产品手册
- 密码学实验RSA加解密
- yafu暴力分解
评论
共有 条评论