问题: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。
 主要是为了突破AES算法只能支持到128位的限制。
如果未替换,可能会得到如下错误: *
Exception in thread "main" java.security.InvalidKeyException:
 Illegal key size or default parameters
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1011)
at javax.crypto.Cipher.implInit(Cipher.java:786)
at javax.crypto.Cipher.chooseProvider(Cipher.java:849)
at javax.crypto.Cipher.init(Cipher.java:1213)
at javax.crypto.Cipher.init(Cipher.java:1153)

在网络安全领域,选择合适的加密技术是保障信息安全的关键一步。对称加密与非对称加密各有特点,它们在实际项目中的应用差异决定了如何选择它们。 参考资源链接:[密码编码学与网络安全:原理与实践](https://wenku.csdn.net/doc/1jr1u6ixu6?spm=1055.2569.3001.10343) 首先,对称加密技术使用相同的密钥进行加密解密操作,其代表算法有AES、DES、3DES等。对称加密的优点在于算法相对简单、速度快、资源消耗低,适合大量数据的加密。然而,对称加密的缺点在于密钥分发管理问题,因为所有通信双方都必须共享密钥,且密钥交换的安全性是一个挑战。 非对称加密则使用一对密钥:公钥用于加密,私钥用于解密。RSA、ECC是常见的非对称加密算法。非对称加密的优势在于解决了密钥分发问题,因为公钥可以公开,而私钥保持私有。但是,非对称加密的计算开销较大,速度较慢,通常用于加密少量数据或用于密钥交换。 在实际的网络安全项目中,通常采用对称加密非对称加密的混合方案,以结合两者的优点。例如,在SSL/TLS协议中,非对称加密用于安全地交换对称加密的会话密钥,而后续的数据传输则使用对称加密。在选择加密技术时,应考虑以下因素: 1. 数据量大小:对于需要加密传输的大数据量,应优先考虑对称加密技术。 2. 安全性要求:对于安全性要求极高的场景,如数字签名或安全密钥交换,应优先考虑非对称加密技术。 3. 系统性能:计算资源有限的系统可能更适于对称加密,以降低资源消耗。 4. 安全策略:遵循相关安全标准策略,确保加密技术的选择符合行业规范法律法规要求。 5. 密钥管理:选择能够有效管理维护密钥生命周期的加密技术。 结合《密码编码学与网络安全:原理与实践》一书中介绍的加密技术策略,可以对项目进行详细的风险评估需求分析,从而做出明智的技术选择。这本书不仅提供了加密技术的深入知识,还结合实际案例,帮助读者在面对复杂的安全挑战时,能够制定出最适合的加密方案。 参考资源链接:[密码编码学与网络安全:原理与实践](https://wenku.csdn.net/doc/1jr1u6ixu6?spm=1055.2569.3001.10343)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值