zoukankan      html  css  js  c++  java
  • AES128和AES256主要区别和安全程度是多少?他们对于机器的消耗是怎样的?两者性能如何?实际开发如何选择?

    高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

       不同于它的前任标准DES,Rijndael使用的是代换-置换网络,而非Feistel架构。AES在软件硬件上都能快速地加解密,相对来说较易于实现,且只需要很少的存储器。作为一个新的加密标准,目前正被部署应用到更广大的范围。

    之前项目老大问我:AES128和AES256主要区别和安全程度是多少?他们对于机器的消耗是怎样的?两者性能如何?实际开发如何选择?(下面是三位知乎同学回答的)

       AES相比同类对称加密算法速度算是非常快,比如在有AES-NI的x86服务器至少能达到几百M/s的速度。安全性在可预见的未来是基本等同的,因为即使是128位也足够复杂无法被暴力破解。现在112位密码还在商业应用,而128位是112位的几万倍,所以在实务中用128位比较划算(稍节约资源)。

        AES256比128大概需要多花40%的时间,用于多出的4轮round key生成以及对应的SPN操作。另外,产生256-bit的密钥可能也需要比128位密钥多些开销,不过这部分开销应该可以忽略。
    安全程度自然是256比128安全,因为目前除了暴力破解,并没有十分有效的代数攻击方法。
    针对具体的AES-256或AES-128的软/硬件实现有特定的攻击方式,不好一概而论。

         AES128和AES256主要区别是密钥长度不同(分别是128bits,256bits)、加密处理轮数不同(分别是10轮,14轮),后者强度高于前者。当前AES是较为安全的公认的对称加密算法。
    现代密码学分为对称加密与非对称加密(公钥加密),代表算法分别有DES(现在发展为3DES)、AES与RSA等。非对称加密算法的资源消耗大于对称加密。一般是进行混合加密处理,例如使用RSA进行密钥分发、协商,使用AES进行业务数据的加解密。

      ==================================================================================================================

    一些关于一些加密解密对称非对称算法相关图片:

    关于用AES128还是AES256算法,个人认为AES128已经足够用,当然AES256可以作为一个营销手段使用

    一些参考文献:

    http://crypto.stackexchange.com/questions/5118/is-aes-256-weaker-than-192-and-128-bit-versions
    http://serverfault.com/questions/51895/are-128-and-256bit-aes-encryption-considered-weak
    http://stackoverflow.com/questions/18847580/aes128-vs-aes256-using-bruteforce
    http://stackoverflow.com/questions/19061658/how-to-switch-from-aes-256-to-aes-128
    https://github.com/sibiantony/ssleuth/issues/15
    http://en.wikipedia.org/wiki/Advanced_Encryption_Standard
    http://ubuntuforums.org/showthread.php?t=1694923
    http://en.wikipedia.org/wiki/AES_implementations

    在实际开发中,如果希望进行AES256位的加密解密,
    需要事先从Java官网下载 local_policy.jar与US_export_policy.jar
    http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/jce-7-download-432124.html
    替换%JAVA_HOME%/jre/lib/security的两个policy文件,
    local_policy.jar与US_export_policy .jar。

  • 相关阅读:
    JS立即执行函数: (function ( ){...})( ) 与 (function ( ){...}( )) 有区别?
    JS闭包和引用
    数据驱动测试二:使用TestNG和CSV文件进行数据驱动
    在SpringTest中将Mockito的mock对象通过spring注入使用
    Mockito各场景使用介绍
    mockito中两种部分mock的实现,spy、callRealMethod
    Docker学习笔记
    Docker实践(二):容器的管理(创建、查看、启动、终止、删除)
    mac 安装 RabbitMQ
    Mac 隐私与安全没有允许任何来源选项
  • 原文地址:https://www.cnblogs.com/sunxuchu/p/5614927.html
Copyright © 2011-2022 走看看