公司需要,需要对一些加解密模块做调研。
把一些参考资料贴出来
AES、DES、3DES算法的C语言实现
这个是内核中摘出的算法,不知道为什么特别慢,DES加解密一起只能到7M/S的数据处理
OpenSSL - DES
openssl的des很快,加密解密一起能到28M/S的速度
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include <stdio.h> #include <openssl/des.h>
int main(int argc,char **argv) { DES_cblock key; DES_string_to_key("pass", &key);
DES_key_schedule schedule; DES_set_key_checked(&key, &schedule);
const_DES_cblock input = "hehehe"; DES_cblock output;
printf("cleartext:%s ", input);
DES_ecb_encrypt(&input, &output, &schedule, DES_ENCRYPT); printf("Encrypted! ");
printf("ciphertext:"); int i; for (i = 0; i < sizeof(input); i++) printf("%02x", output[i]); printf(" ");
DES_ecb_encrypt(&output, &input, &schedule, DES_DECRYPT); printf("Decrypted! "); printf("cleartext:%s ", input);
return 0; }
|
DES算法的加密密钥是根据用户输入的密码生成的,该算法把64位密码中的第8位、第16位、第24位、第32位、第40位、第48位、第56位、第64位作为奇偶校验位,在计算密钥时要忽略这8位.如果输入的密码只是在这8位上有区别的话,那么操作后的结果将是一样的.
例:
输入的密码为wuzhenll,密钥的16进制表示为77 75 7A 68 65 6E 6C 6C
任意改变这64位数据的奇偶校验位,可以得到16个不同的密码,把8个奇偶检验位全取反后:
w->v
u->t
z->{
h->i
e->d
n->o
l->m
形成新密码:vt{idomm
表面上新密码和原密码迥然不同,但是由于他们仅在奇偶校验位上有区别,所以用这两个密码进行加密解密操作得到的结果是一样的.
openssl的使用也非常简单
使用最新openssl
1.0.1h 编译安装 openssh 6.6p1
这是讲如何安装openssl的
OpenSSL编程-DES编程详解
openssl之aes加密-源码分析
AES_encrypt 与 AES_cbc_encrypt ,加密模式
OPENSSL库的使用-DES篇
这三篇都是将如何使用的
未完待续