阅读:20758回复:59
(原创)透明加解密-AES等长加密算法(含代码)
[post] 在没有解决文件透明加解密的变长加密问题之前,我们大多数都采用等长加密,而等长加密算法有
异或、取反、取反+异或、RC4等,现在经过2天时间终于把AES算法也纳入进来,请大家验证! 1. 支持用户层、核心层两种模式(用_USRMODE宏控制); 2. 使用方法如下: // // AES Cipher handle and keys // AES_HANDLE gFltCipherAES; // AES句柄 BYTE gFltCipherAESKey[256/8] = {'T'}; // 密钥,可换作其它 // // 初始化 // gFltCipherAES = AESInitialize(BIT256, gFltCipherAESKey); ASSERT(NULL != gFltCipherAES); // // 加密 // AESCipher( gFltCipherAES, (BYTE*)InBuffer, (BYTE*)OutBuffer, Length ); // // 解密 // AESInvCipher( gFltCipherAES, (BYTE*)InBuffer, (BYTE*)OutBuffer, Length ); // // 反初始化 // AESUnInitialize(gFltCipherAES); |
|
|
沙发#
发布于:2007-04-02 13:53
what why who
|
|
|
板凳#
发布于:2007-04-02 14:03
能做任意等长加密吗? 你是 16 个字节 对齐才行吧?
extern "C" void AESCipher(AES_HANDLE AesHandle, BYTE *input, BYTE *output, ULONG length) { BYTE *pi, *po; pi = input; po = output; for(ULONG i = 0; i < length; i+=16) { Cipher(AesHandle, pi, po); pi+=16; po+=16; } } |
|
|
地板#
发布于:2007-04-02 14:36
AES是分组算法,你是怎么解决文件的变长处理的?
|
|
地下室#
发布于:2007-04-02 14:39
YES,当然可以做任意等长加密
|
|
|
5楼#
发布于:2007-04-02 14:54
我是想看看
|
|
6楼#
发布于:2007-04-02 15:00
想看看
|
|
7楼#
发布于:2007-04-02 15:18
看看,参考
|
|
8楼#
发布于:2007-04-02 15:39
及时地参考文献
|
|
|
9楼#
发布于:2007-04-02 15:57
看看
|
|
10楼#
发布于:2007-04-02 16:14
在测试时发现:
明文为:"1234567890",长度为10 加密时得到的密文为长度为16. 解密时必须输入16字节的密文,否则为乱码. 这也和标准的AES相吻合. 不知道楼主所说的"任意等长加密"是什么意思? 是否可理解为:输入和输出的长度相等? |
|
11楼#
发布于:2007-04-02 16:39
个人认为:如果是输入和输出是等长的话,只有一种情况:输入是16的倍数,
因为在楼主的代码中是按照16字节分组的. 不知道理解的是否有误,还请大侠多指教. |
|
12楼#
发布于:2007-04-02 16:46
具体什么AES算法?
|
|
13楼#
发布于:2007-04-02 17:02
guan zhu
|
|
14楼#
发布于:2007-04-02 17:03
看看,学习!
|
|
15楼#
发布于:2007-04-02 17:28
学习一下,谢谢并支持楼主的精彩分享和辛苦劳动!
|
|
16楼#
发布于:2007-04-02 17:48
good kanakn
|
|
17楼#
发布于:2007-04-02 17:51
好人啊
|
|
|
18楼#
发布于:2007-04-02 17:59
弱弱的问一下,这个是驱动?
|
|
19楼#
发布于:2007-04-02 18:43
引用第17楼looksail于2007-04-02 17:51发表的“”: |
|
上一页
下一页