今天在尝试运用 ruby 的 AES 加密,想要安装 fast-aes 这个插件 http://rubygems.org/gems/fast-aes 但是发现装不上,后来知道这个类库是用 C 写的,但是不会整。 发现@sevk写的几个帖子,其中一篇 http://sevk.iteye.com/blog/688739 看了还是不会整,期望各位懂人指导一下,小弟是在充满争议的 windows 环境下进行开发的。。。
而 fast-aes 的话,Github 上面有说明的
This is a lightweight, fast implementation of AES
Ruby 自带的是 OpenSSL 的包装,如果你装 Ruby 用的 OpenSSL 是 1.0.1 以上并且 CPU 是 i5 以上,那么已经没法更快了,因为 OpenSSL 会直接用 CPU 的 AES 指令, 比 C 的实现快 8 倍左右
@lionzixuanyuan 在 windows 得用 mingw 开命令行编译,(或者你装个 visual studio 就有 nmake 命令了), 这个 gem 存在的原因可能是作者不知道 openssl 而已...
text = 'hello'
key = rand(36**32).to_s(36).ljust(32)
require 'openssl'
# 加密
aes = OpenSSL::Cipher.new 'aes-256-cbc' # 另外还可以选各种 -128 -ecb -ofb 等模式
aes.encrypt
aes.key = key
ctext = aes.update('hello') << aes.final
# 解密
aes = OpenSSL::Cipher.new 'aes-256-cbc'
aes.decrypt
aes.key = key
deciphered_text = aes.update(ctext) << aes.final
text == deciphered_text #=> true
安装 vc6.0 或 vs2008 , vs2010 等开发环境,就有 nmake 了, 或安装这个: https://github.com/downloads/oneclick/rubyinstaller/DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe 安装完后,再 gem install 试试,看报什么错。
不过建议你按 10 楼的方法解决,最简单省事。
C:\Documents and Settings\Administrator>irb
irb(main):001:0> require 'openssl'
=> true
irb(main):002:0>
#16 楼 @lionzixuanyuan 运行 vcvars32 看看,有没有反应,我这台没安装 vs , 不知道路径是什么,估计你搜索一下 vcvars32.bat 这个文件就 OK
64 位系统是 vcvars64.bat,在 vs2010 的安装目录里的 bin 目录, 找到了: http://www.mongodb.org/display/DOCS/Building+with+Visual+Studio+2010
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat