📄 aes.cpp
字号:
/*
tomcrypt(http://libtomcrypt.org/)
aes分段加密演示。使用前 #include <tomcrypt.h>
AES,分段长度16,密钥最大长度32
还支持以下各种分段加密方式,其分段长度和密钥长度参考 crypt.pdf 21页
Blowfish
XTEA
RC5
RC6
SAFER+
Rijndael (aka AES)
Twofish
SAFER (K64, SK64, K128, SK128)
RC2
DES, 3DES
CAST5
Noekeon
Skipjack
Anubis (with optional tweak as proposed by the developers)
Khazad
使用其他加密方式只要将下面aes开头的函数名换成对应的开头
例如des使用的函数是 des_setup,des_ecb_encrypt,des_ecb_decrypt
更详细的内容看 crypt.pdf第三章 以及 tomcrypt_cipher.h
*/
/*
下面的程序实现的功能:
将字符串c1用aes方法加密放在c2,再解密放在c3,密钥是myKey
*/
unsigned char myKey[32]="这里是你的密钥,不要超过32字节";
symmetric_key skey;//加密状态,各类对称加密函数都需要
aes_setup(myKey, 32, 0, &skey);
//加密前初始化状态(密钥,密钥长度,迭代次数(0:使用推荐值),加密状态 )
unsigned char c1[32]="这里是你需要加密的字符,长度任意";//随便取一个字符串
unsigned char c2[32];//输出长度>=输入长度,分段长度的倍数(这里就是16的倍数)
//分段加密,每段长度为16,(一般不可能只有2段,自己写循环吧)
aes_ecb_encrypt(&c1[0], &c2[0],&skey);
aes_ecb_encrypt(&c1[16], &c2[16],&skey);
unsigned char c3[32];
aes_setup(myKey, 32, 0, &skey);
//解密前初始化状态,其实和加密的状态是完全一致的
//分段解密
aes_ecb_decrypt(&c2[0], &c3[0],&skey);
aes_ecb_decrypt(&c2[16], &c3[16],&skey);
/*
如以上内容有错误,或有疑问——————>rinick@gmail.com
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -