最近在研究nginx的ssl_ciphers,发现服务器普遍使用AES_GCM作为cipher,但我用openssl speed测试发现:其实AES_CCM的处理速度占优,比AES_GCM快两个数量级.

而AES_GCM和AES_CCM又提供了同等级的安全性,基于什么考虑选择AES_GCM呢?

⋊> ~ openssl speed -elapsed -evp aes-128-gcm 12:01:25

You have chosen to measure elapsed time instead of user CPU time.

Doing aes-128-gcm for 3s on 16 size blocks: 97979075 aes-128-gcm's in 3.00s

Doing aes-128-gcm for 3s on 64 size blocks: 59422372 aes-128-gcm's in 3.00s

Doing aes-128-gcm for 3s on 256 size blocks: 29006722 aes-128-gcm's in 3.00s

Doing aes-128-gcm for 3s on 1024 size blocks: 11353862 aes-128-gcm's in 3.00s

Doing aes-128-gcm for 3s on 8192 size blocks: 1765209 aes-128-gcm's in 3.00s

Doing aes-128-gcm for 3s on 16384 size blocks: 895929 aes-128-gcm's in 3.00s

OpenSSL 1.1.1-dev xx XXX xxxx

built on: reproducible build, date unspecified

options:bn(64,64) rc4(16x,int) des(int) aes(partial) idea(int) blowfish(ptr)

compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack

The 'numbers' are in 1000s of bytes per second processed.

type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes

aes-128-gcm 522555.07k 1267677.27k 2475240.28k 3875451.56k 4820197.38k 4892966.91k

⋊> ~ openssl speed -elapsed -evp aes-128-ccm 12:01:45

You have chosen to measure elapsed time instead of user CPU time.

Doing aes-128-ccm for 3s on 16 size blocks: 119658614 aes-128-ccm's in 3.00s

Doing aes-128-ccm for 3s on 64 size blocks: 119826773 aes-128-ccm's in 3.00s

Doing aes-128-ccm for 3s on 256 size blocks: 119907412 aes-128-ccm's in 3.00s

Doing aes-128-ccm for 3s on 1024 size blocks: 120247420 aes-128-ccm's in 3.00s

Doing aes-128-ccm for 3s on 8192 size blocks: 119976321 aes-128-ccm's in 3.00s

Doing aes-128-ccm for 3s on 16384 size blocks: 120088122 aes-128-ccm's in 3.00s

OpenSSL 1.1.1-dev xx XXX xxxx

built on: reproducible build, date unspecified

options:bn(64,64) rc4(16x,int) des(int) aes(partial) idea(int) blowfish(ptr)

compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack

The 'numbers' are in 1000s of bytes per second processed.

type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes

aes-128-ccm 638179.27k 2556304.49k 10232099.16k 41044452.69k 327615340.54k 655841263.62k

⋊> ~ openssl speed -decrypt -elapsed -evp aes-128-gcm 12:08:04

You have chosen to measure elapsed time instead of user CPU time.

Doing aes-128-gcm for 3s on 16 size blocks: 81282951 aes-128-gcm's in 3.00s

Doing aes-128-gcm for 3s on 64 size blocks: 59261806 aes-128-gcm's in 3.00s

Doing aes-128-gcm for 3s on 256 size blocks: 30926527 aes-128-gcm's in 3.00s

Doing aes-128-gcm for 3s on 1024 size blocks: 11984041 aes-128-gcm's in 3.00s

Doing aes-128-gcm for 3s on 8192 size blocks: 1795430 aes-128-gcm's in 3.00s

Doing aes-128-gcm for 3s on 16384 size blocks: 906534 aes-128-gcm's in 3.00s

OpenSSL 1.1.1-dev xx XXX xxxx

built on: reproducible build, date unspecified

options:bn(64,64) rc4(16x,int) des(int) aes(partial) idea(int) blowfish(ptr)

compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack

The 'numbers' are in 1000s of bytes per second processed.

type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes

aes-128-gcm 433509.07k 1264251.86k 2639063.64k 4090552.66k 4902720.85k 4950884.35k

⋊> ~ openssl speed -decrypt -elapsed -evp aes-128-ccm 12:07:32

You have chosen to measure elapsed time instead of user CPU time.

Doing aes-128-ccm for 3s on 16 size blocks: 235354888 aes-128-ccm's in 3.00s

Doing aes-128-ccm for 3s on 64 size blocks: 234594124 aes-128-ccm's in 3.00s

Doing aes-128-ccm for 3s on 256 size blocks: 236230823 aes-128-ccm's in 3.00s

Doing aes-128-ccm for 3s on 1024 size blocks: 235920946 aes-128-ccm's in 3.00s

Doing aes-128-ccm for 3s on 8192 size blocks: 236134945 aes-128-ccm's in 3.00s

Doing aes-128-ccm for 3s on 16384 size blocks: 236273795 aes-128-ccm's in 3.00s

OpenSSL 1.1.1-dev xx XXX xxxx

built on: reproducible build, date unspecified

options:bn(64,64) rc4(16x,int) des(int) aes(partial) idea(int) blowfish(ptr)

compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack

The 'numbers' are in 1000s of bytes per second processed.

type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes

aes-128-ccm 1255226.07k 5004674.65k 20158363.56k 80527682.90k 644805823.15k 1290369952.43k

aes ccm模式 java_AES_GCM和AES_CCM的选择相关推荐

  1. java 实现AES CCM模式

    Java中可以使用JCA(Java Cryptography Architecture)来实现AES CCM模式的加密和解密.下面是一个简单的示例代码: import javax.crypto.Cip ...

  2. 精述wifi、zigbee在链路层的安全原理:CCM模式 1

    一.前言 物联网及无线传感器网络的特点都为低带宽,节点的存储空间.计算性能.能量供应都较低在链路层中,业界主流的协议包括Wi-fi(IEEE 802.11),zigbee(IEEE 802.15.4) ...

  3. AES CBC模式下的CBC bit flipping Attack

    <?xml version="1.0" encoding="utf-8"?> AES CBC模式下的CBC bit flipping Attack ...

  4. python aes加密 cbc_【转载】python AES CBC模式加密

    今天需要用到AES CBC模式加密,搜索了很久,终于加密成功,记录一下今天的理解. 首先要安装pycrypto库,不知道为什么在windows安装失败,在linux可以正常安装 这里有几点要注意,ke ...

  5. golang实现AES ECB模式的加密和解密

    最近有一个需求需要在golang中实现AES ECB模式的加密和解密,  看了一下官方文档和相关资料发现golang 官方包并没有完善的实现,于是自己尝试写了一个,本文中的AES算法是基于ECB模式, ...

  6. Python base64 + AES EBC模式加密

    """ 先进行Base64加密,再进行AES ecb模式加密:EBC 模式需要补全 """ ''' ECB模式补足16位 ''' def a ...

  7. 游戏推广免费的cps模式和游戏加盟平台选择的一个误区。

    今天给大家分享一下游戏推广mf的cps模式和游戏加盟平台选择的一个误区. 第一先来说一下游戏cps,简单的表达呢就是销售把产品卖出去可以获得相应的提点分成,这个模式呢是属于免费的,但是免费不代表没有陷 ...

  8. aes加密算法python语言实现_如何用Python实现AES CCM的加解密

    1.简介 AES CCM被广泛应用于现代通讯中,在学习过程中需要验证数据的加解密的结果,那么有个方便修改的Python脚本工具就是一个迫切的需求. 2. 实施 我们下面介绍如何实现AES CCM的Py ...

  9. 从零开始搭建仿抖音短视频App-前后端开发模式,前端框架的选择、前端项目搭建

    目录 前后端开发模式 传统JavaWeb开发模式 前后端分离模式​编辑 前端框架的选择-UniApp介绍 内网互通原则 运行到iphone与Android 前后端开发模式 传统JavaWeb开发模式 ...

  10. 亚马逊无货源模式,尽量不要去选择这些?

    亚马逊无货源模式,尽量不要去选择这些? 亚马逊卖家中经常说起的一句话是"三分选品,七分运营",选品是非常的一个环节,要根据国外市场的需求和市场差异来进行选品,因为你认为好的产品放到 ...

最新文章

  1. 详解Python中的循环的几个类型
  2. SRM 721 DIV2
  3. SELinux策略语言--客体类别和许可
  4. vbs获取程序窗体句柄_[VBA][高阶应用][类模块]自绘窗体进度条类cProgressBar.cls
  5. cocos2d的常用动作及效果总结之五:Animation
  6. P4389 付公主的背包(生成函数/多项式)
  7. [vue] 你有使用过babel-polyfill模块吗?主要是用来做什么的?
  8. Mysql 1030 Got error -1 from storage engine 错误解决
  9. 【消息队列之rabbitmq】学习RabbitMQ必备品之一
  10. Python快速判断若干整数是否互不相同
  11. 蓝桥杯 ALGO-52 算法训练 排列问题
  12. boa 调用 cgi 读取文件_PHP7的内核CGI与FastCGI,你懂多少?
  13. python虚拟环境 windows环境搭建_windows下安装Python虚拟环境virtualenvwrapper-win
  14. PLSQL如何将千万数据快速插入到另一张表中_数据库设计中的 9 大常见错误
  15. NGINX HTTP2 处理流程
  16. OriginPro 2021 设置成中文(软件自带)
  17. 2021-09-09 一个python代码验证身份证号码
  18. 疫情后为提高免疫力和健康对红参需求大幅上升;辉瑞与辉凌就前列腺癌创新药注射用醋酸地加瑞克达成战略合作 | 医药健闻...
  19. HDU 6438 Buy and Resell【贪心】
  20. 惠普103a打印机芯片清零_惠普M104a打印机的粉盒CF218A,芯片怎么取下来啊

热门文章

  1. 区块链还有多长的路要走
  2. 约瑟夫 java_约瑟夫问题 java 实现详解
  3. php 母版 登陆,幻灯片母版的作用有哪些
  4. Flutter 2020/2/18 来到app登录界面
  5. PCI-PCIE中断机制之三
  6. MDK-ARM_V525新建工程 STM32使用软件仿真、RAM仿真调试及Flash下载配置详解
  7. 计算机辅助翻译与人工智能,2018年机器翻译行业概述与现状,人工智能让人人实现国际化交流...
  8. Skype for business 2015 综合部署系列七:配置 Skype 边缘传输服务器
  9. python实现微信发送信息
  10. ECharts南丁格尔玫瑰实现及部分配置解析