JRuby 综述:Ruby 1.8.7 支持、Android 支持及 Bcrypt-ruby

  • Werner Schuster
  • 张龙

2009 年 8 月 25 日

话题:JavaRubyAndroid语言 & 开发

拖延了一年多之后,JRuby 团队终于决定将 Ruby 1.8.7 支持添加到 JRuby 主干中

Ruby 1.8.7 支持终于登陆 JRuby 1.4 了!感谢 olabini,Marcin Mielzynski 及 JRuby 社区的全体成员!

JRuby 1.4 将成为 JRuby 的下一个版本,年底行将发布,jruby.properties表明默认情况下其版本号是 Ruby 1.8.7。

JRuby 的Android支持也得到了极大的改进。Charles Nutter发布了一个基于 JRuby 的 irb 作为 Android 应用,其源代码位于 GitHub,叫做 ruboto-irb

与此同时,Android Scripting Environment开始支持 JRuby了。

很多 Ruby 程序库通过本地扩展将 Ruby 与本地程序库连接起来——但这么做对 JRuby 却不行,bcrypt-ruby就是一个活生生的例子。幸好有 Phusion 的无私奉献,bcrypt-ruby 的下一版将能使用在 JRuby 及 Ruby 1.9.x 上了。其JRuby 支持包含了 bcrypt 算法的 Java 版本,而Ruby 1.9 支持则涵盖了在长时间计算过程中对 GIL 处理及释放方式的改进。

那么 bcrypt-ruby 到底为何物呢?它实现了一种散列算法,其运行速度要比其他算法如 SHA-1 慢很多。其想法就是利用该算法来对密码进行散列;试想,如果数据库的密码散列值被窃取,那么就可以通过它计算出密码了。虽然散列算法是单向函数,我们仍旧可以对大量可能的密码进行散列,然后与数据库中存储的散列值进行比对。快速的散列算法对这种暴力破解很有帮助,而这正是 bcrypt 的用武之地。由于算法运行速度很慢,因此人们很难通过暴力破解的方式获取散列密码。

bcrypt-ruby 程序库会保证密码散列值是经过随机数处理过的(即salt,意指在每个密码后面添加随机值,然后才计算密码和 salt 的散列值,以此防范“字典攻击”——译者注)。

查看英文原文:JRuby Roundup: Ruby 1.8.7 Support, Android Support, Bcrypt-ruby

JavaRubyAndroid语言 & 开发