【问题标题】:jruby bundle install not working at gem 'scrypt'jruby bundle install 在 gem 'scrypt' 上不起作用
【发布时间】:2015-07-01 21:49:35
【问题描述】:

我正在尝试为 jruby (Windows) 进行捆绑安装,但出现此错误:

C:/jruby-1.7.19/bin/jruby.exe -rubygems C:/jruby-1.7.19/lib/ruby/gems/shared/gems/rake-10.1.0/bin/rake RUBYARCHDIR=C:/jruby-1.7.19/lib/ruby/gems/shared/extensions/universal-java-1.8/1.9/scrypt-2.0.2 RUBYLIBDIR=C:/jruby-1.7.19/lib/ruby/gems/shared/extensions/universal-java-1.8/1.9/scrypt-2.0.2
io/console not supported; tty will not be manipulated
mkdir -p i386-windows
cc -fexceptions -O -fno-omit-frame-pointer -fno-strict-aliasing -Wall -msse -msse2 -fPIC  -o i386-windows/crypto_scrypt-sse.o -c ./crypto_scrypt-sse.c
rake aborted!
Command failed with status (127): [cc -fexceptions -O -fno-omit-frame-pointer...]
org/jruby/RubyProc.java:271:in `call'
org/jruby/RubyProc.java:271:in `call'
org/jruby/RubyArray.java:1613:in `each'
org/jruby/RubyArray.java:1613:in `each'
org/jruby/RubyArray.java:1613:in `each'
org/jruby/RubyArray.java:1613:in `each'
Tasks: TOP => default => i386-windows/scrypt_ext.dll => i386-windows/crypto_scrypt-sse.o
(See full trace by running task with --trace)

rake failed, uncaught signal 1

我已经安装了 jruby 和 JVM。

【问题讨论】:

    标签: ruby-on-rails gem rubygems jruby scrypt


    【解决方案1】:

    您正在尝试在 Java 版本的 ruby​​ 中安装带有本机扩展的 gem:通常是个坏主意...

    我在https://github.com/wg/scrypt 找到了 scrypt 算法的纯 java 实现。

    您需要从 Maven (http://search.maven.org/remotecontent?filepath=com/lambdaworks/scrypt/1.4.0/scrypt-1.4.0.jar) 下载 jar 文件,将其添加到您的库路径或在您的代码中要求该 jar。

    接下来是编写一个包装器来模仿 scrypt 行为,以将其用作 ruby​​/rails 代码中的替代品。

    或者,您可以删除 scrypt 位并直接使用 java 库。这是在 jirb (1.7.20) 中测试的 sn-p...

    >> require 'java'
    => true
    >> require './scrypt-1.4.0.jar'
    => true
    >> java_import 'com.lambdaworks.crypto.SCryptUtil'
    => [Java::ComLambdaworksCrypto::SCryptUtil]
    >> passwd,n,r,p = 'secret',16384,8,1
    => ["secret", 16384, 8, 1]
    >> hashed_passwd = SCryptUtil.scrypt(passwd,n,r,p)
    => "$s0$e0801$MzcxaOBVz7kaVU6E5HV0cg==$RAx9ADWVeyZE5JRl+J1NpiBSEPNabEcVdR7drddpgMw="
    >> SCryptUtil.check(passwd,hashed_passwd)
    => true
    >> SCryptUtil.check('wrong password',hashed_passwd)
    => false
    

    【讨论】:

      【解决方案2】:

      已经很晚了,但我只是 wrote 一个多平台 gem,它包含了作为 scrypt gem 的 API 插件替代品的详细信息。

      gem install scrypt-ruby -P MediumSecurity

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-07
        • 1970-01-01
        • 2017-06-06
        • 1970-01-01
        • 2016-01-25
        • 2011-06-01
        • 2013-12-26
        相关资源
        最近更新 更多