能力值:
( LV2,RANK:10 )
|
-
-
2 楼
呵呵 谢谢了,之学过DES。。。。 惭愧了。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
学习一下,呵呵
|
能力值:
( LV5,RANK:60 )
|
-
-
4 楼
先顶楼主。
看了下AES代码,中文注释很好。实现是按照算法实现,但从编程角度考虑部分有点不妥,
为着互相学习的目的回复: /******************************************************************************/
// 名称:getSBoxInvert
// 功能:对输入32位字进行S盒转换,得到对应S盒值
// 参数:输入4字节
// 返回:S盒值
/******************************************************************************/
int getSBoxValue(int num)
{
int sbox[256] = {
//0 1 2 3 4 5 6 7 8 9 A B C D E F
0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
......
};
return sbox[num];
}
int getSBoxInvert(int num)
{
int rsbox[256] =
{ 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb
...
};
return rsbox[num];
}
上述getSBoxValue getSBoxInvert每轮迭代都被数次调用,但rsbox在这里为常量,却以局部变量的身份出现,造成函数开销平白无故浪费很多。可以s盒在外面做全局,这两个函数直接宏即可了。 /******************************************************************************/
// 名称:aes_encrypt
// 功能:AES加密函数
// 参数:key: 加密密钥;mw: 加密明文
// 返回:无
/******************************************************************************/
void aes_encrypt(unsigned char* key , unsigned int* mw)
{
Nr = 128; // 128位密钥
Nk = Nr/32; // 密钥大小(32位字)
Nr = Nk + 6; // 迭代轮次
//! 当密钥为128位时,明文分组大小为128位(16)字节
memset( Key, 0, sizeof(Key) );
memset( in, 0, sizeof(in) );
for( int i=0; i<Nk*4; i++ )
{
Key[i] = key[i];
in[i] = ((word8*)mw)[i];
}
//! 密钥膨胀
KeyExpansion();
//! 迭代加密
Cipher();
memcpy( mw, out,16 );
}
加密与解密用的in,out都被定义成全局变量了,如此一来必须单线程运行了。其实仅仅预想的就是单线程的话,为了降低耦合也推荐aes_encrypt内定义局部的out,传地址给cipher,cipher内部修改......
解密类同
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
感謝njzjh的建議!
希望大家有好的建議也分享分享,喜歡這種氣氛。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
收藏一份,谢谢分享.
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
尝试一下,不知是否可用,谢了。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
看了有点深渊,不过有点见识了
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
补全主函数,应该不会遇到麻烦
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
希望也能有java版的~~
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
以前只稍微了解过一点点点……原理,没实践过,也没深入过,学习一下。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
收藏算法,谢谢楼主
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
顶,谢谢楼主,要好好学习一下!
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
一点一点的学习啦
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
这个东西好。。有没有其他语言的呢。。这个看不太懂。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
收藏一下 暂时用不到
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
[QUOTE=桑椹;810340]内含:Singletable ,SHA1,RSA,RC4,MD5,LSB,IDEA,ELGAMAL,DES,CAESAR,AES,
希望对大家有用
加密算法.rar[/QUOTE]
似乎 RC 4 有问题啊。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
学习下好东西
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
好东西啊, 如果能加上测试代码就完美了
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
谢谢LZ
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
看看 学习下
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
好好学习一下谢谢
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
这算法什么时候能学会?
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
感恩分享!!
|
|
|