⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aes.cpp

📁 这是由Rinick编写的加解密函数库。最近找了不少关于加解密的C源码
💻 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 + -