Openssl 中DES,AES,BlowFish算法的运算速度比较

这两天写了Openssl中关于DES,AES,BlowFish等对称加密算法的API介绍。今天写了一个程序,测试了一下这三种加密算法的运算速度。
硬件环境:
    X200, CPU: P8600,2.2G, 内存: 2G
软件环境:
    Windows XP SP3
    
测试方法:
    DES: 3DES ECB模式,密钥长度16个字节,加密/解密8个字节;
    AES: AES ECB模式,密钥长度16个字节,加密/解密16个字节;
    BlowFish: ECB模式,密钥长度16个字节,加密/解密16个字节;
    
    每个算法分别对数据做1000000次的加密/解密,得到的时间如下:
    
    3DES加密:469 ms
    AES加密:125ms
    BlowFish加密:93ms
    
    3DES解密:485ms
    AES解密: 125ms
    BlowFishjiem: 125ms
    
    从上面数据来看,BlowFish和AES运算速度差不多,3DES运算时间要长,差不多是AES的3倍还多。
    
    在新的项目中,推荐使用AES算法。
   

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
使用 OpenSSL 库实现对称加密解密算法 DESAES 的步骤如下: 1. 引入 OpenSSL 库头文件和链接库: ```c #include <openssl/des.h> #include <openssl/aes.h> // 链接库需要添加 -lcrypto 参数 ``` 2. 生成密钥: ```c DES_cblock key_des; DES_random_key(&key_des); ``` ```c unsigned char key_aes[AES_BLOCK_SIZE]; RAND_bytes(key_aes, AES_BLOCK_SIZE); ``` 3. 初始化加密解密上下文: ```c DES_key_schedule schedule; DES_set_key(&key_des, &schedule); ``` ```c AES_KEY key_aes; AES_set_encrypt_key(key_aes, 128, &key_aes); AES_set_decrypt_key(key_aes, 128, &key_aes); ``` 4. 加密解密数据: ```c DES_encrypt1(input, output, &schedule); DES_decrypt1(input, output, &schedule); ``` ```c AES_encrypt(input, output, &key_aes); AES_decrypt(input, output, &key_aes); ``` 完整的示例代码如下所示: ```c #include <openssl/des.h> #include <openssl/aes.h> #include <openssl/rand.h> #include <stdio.h> #include <string.h> int main() { // DES加密解密 DES_cblock key_des; DES_random_key(&key_des); unsigned char input_des[] = "Hello, world!"; unsigned char output_des[32]; DES_key_schedule schedule; DES_set_key(&key_des, &schedule); DES_encrypt1(input_des, output_des, &schedule); DES_decrypt1(output_des, input_des, &schedule); printf("DES decrypted message: %s\n", input_des); // AES加密解密 unsigned char key_aes[AES_BLOCK_SIZE]; RAND_bytes(key_aes, AES_BLOCK_SIZE); unsigned char input_aes[] = "Hello, world!"; unsigned char output_aes[32]; AES_KEY aes_key; AES_set_encrypt_key(key_aes, 128, &aes_key); AES_encrypt(input_aes, output_aes, &aes_key); AES_set_decrypt_key(key_aes, 128, &aes_key); AES_decrypt(output_aes, input_aes, &aes_key); printf("AES decrypted message: %s\n", input_aes); return 0; } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值