微信号:ruby_and_rails

介绍:[Ruby程序员]旨在分享最新的Ruby & Rails,移动开发以及其他相关技术的分享,内容通俗易懂,有来自北京,上海,广州的技术达人不定期的分享.

美国联邦政府加密标准AES-Ruby

2015-05-28 13:26 Michael

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


AES是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置permutations和替换substitutions输入数据。


Ruby代码实现:

require 'openssl'
require 'base64'

class AesEncryptDecrypt

def self.encryption(key, msg, algorithm)
cipher = OpenSSL::Cipher.new(algorithm)
cipher.encrypt()
cipher.key = key
crypt = cipher.update(msg) + cipher.final()
crypt_string = (Base64.encode64(crypt))
return crypt_string
end

def self.decryption(key, msg, algorithm)
cipher = OpenSSL::Cipher.new(algorithm)
cipher.decrypt()
cipher.key = key
tempkey = Base64.decode64(msg)
crypt = cipher.update(tempkey)
crypt << cipher.final()
return crypt
end
end



测试:


# KEY = "***************************************"

AesEncryptDecrypt.encryption(

KEY, "gurudath", "AES-128-ECB"

)
AesEncryptDecrypt.decryption(

KEY, "mCwOIMl+EG2DFUkIaOHCpQ==", "AES-128-ECB"

)

# mCwOIMl+EG2DFUkIaOHCpQ==
# gurudath

AesEncryptDecrypt.encryption(

KEY, "gurudath", "AES-256-CBC"

)
AesEncryptDecrypt.decryption(

KEY, "jbhZh7fl0oUAM1xU+kQyAw==", "AES-256-CBC"

)

# jbhZh7fl0oUAM1xU+kQyAw==
# gurudath



AES的安全性怎样呢?这是一个很难回答的问题,但是一般多数人的意见是:它是目前可获得的最安全的加密算法。AES已被列为比任何现今其它加密算法更安全的一种算法。在理论和实践基础上,AES被认为是“安全的”,因为要破解它的话,唯一有效的方法是强行(brute-force)生成所有可能的密钥。 如果密钥长度为256位,还没有已知的攻击可以在一个可接受的时间内破解AES即便在当今最快的系统上,它也要花费数年时间!


新的AES将无疑成为加密所有形式电子信息的事实上的标准,取代DES。AES加密的数据在某种意义上是牢不可破的,因为没有已知的密码分析攻击可以解密AES密文,除非强行遍历搜索所有可能的256 位密钥。

点击关注我关注我哟

[Ruby程序员]旨在分享最新的Ruby & Rails,移动开发以及其他相关技术的分享,内容通俗易懂,有来自北京,上海,广州的技术达人不定期的分享。!(ruby程序员)




 
ruby程序员 更多文章 rails 中使用roo读取excel数据 ruby中的鸭子类型(duck type) Rails中如何使用jsonp实现跨域访问 一道笔试题 ruby设计模式-单例模式
猜您喜欢 隐私话题从我这开始 一张图告诉你2016央视春晚支付宝8亿现金红包时刻表 Linux命名空间学习教程(二) IPC PingCAP 专访|写代码、玩开源,体会造物的成就感 CSS3 3D 行星运转动画 + 浏览器渲染原理