cc++实现AES加密,支持cbc等加密模式,支持多种填充模式,不要openssl实现的

cc++实现AES加密,支持cbc等加密模式,支持多种填充模式,不要openssl实现的,第1张

使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式陪搜(这个模式会自动设置各种环境变量)

、解压缩openssl的包,进入openssl的目录

、perl configure VC-WIN32

尽量在这个目录下执行该命令,否则郑祥找不到Configure文件,或者指定完芦丛历整的Configure文件路径。

、ms\do_ms

在解压目录下执行ms\do_ms命令

、nmake -f ms\ntdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件

注意:在运行第五步时,cl编译器会抱怨说.\crypto\des\enc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:

warning treated as error - no object file generated

/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.

是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。

于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。

哎,学校大作燃漏业吧。核心是des和aes的算法呗,自己一点点写代码量不很少呢。没时间给你写了。

不皮昌烂过有个很好的偷懒办法:建议lz你去找一下OpenSSL的源码。里面有AES,DES的原生C实现。现成函数。lz你直接从里面抠出来复制到你工程里迅物就行了。。

按照AES算法,完成AES算法S盒、行移位、列混合、轮密钥加 *** 作

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对租缺卖称密钥加密中最流行的算法之一。

AES采用对称分组密码体制,密钥的长度最弊逗少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。

AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,会补齐)。AES加密有很多轮的重复和变换。大致步骤如下:1、密钥扩展(KeyExpansion),2、扮腊初始轮(Initial Round),3、重复轮(Rounds),每一轮又包括:字节替代(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)、轮密钥加(AddRoundKey),4、最终轮(Final Round),最终轮没有MixColumns。

AES算法的加密整体结构

字节替代(SubBytes):使用一个S盒进行非线性置换,S盒是一个16×16的矩阵,如表4-9所示。字节替代将输入的状态矩阵的每一个字节通过一个简单查表 *** 作,映射为另外一个字节。

输入字节的前4bits指定S盒的行值,后4bits指定S盒的列值,行和列所确定S盒位置的元素作为输出,例如输入字节“03”,行值为0,列值为3,根据表4-9可知第0行第3列对应的值为 “7B”,因此输出字节为“7B”。

举例

在上面的示例中,第1个基本元素为”F5”,它将被S盒行为第”F行”、列为第”5”列的元素“E6“代替,其余的输出也用相同的方法确定。

状态阵列的4个行循环以字节为基本单位进行左移,而每行循环做移的偏移量是由明文分组的大小和所在行数共同确定,即列数Nb和行号确定。

举例

举例

轮密钥加 *** 作是将密钥与明文按比特异或,轮密钥通过密钥扩展得到

和fips-192(AES)的标准一样


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8237934.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存