小编Thi*_*ilo的帖子

我可以在ruby中复制PHP的AES加密的确切行为吗?

我正在使用Ruby on Rails重建PHP Web应用程序,并且非常希望避免强制所有现有用户重置其加密密码.PHP站点使用mcrypt_encrypt和AES-256-ECB,我不能在我的生活中使用ruby的OpenSSL获得相同的密文.我也无法解密它们(原则上这是好的),因为实际存储在用户数据库中的是AES密文的MD5哈希.

我已经阅读了这些以前密切相关的问题以及非常有用的答案:

包括那里引用的页面,如果我理解正确,PHP和ruby实现使用不同的填充方法.既然我不得不接受PHP方面的工作方式,有没有办法在某种程度上强制使用ruby/OpenSSL上相同的填充方法?我正在使用ruby 1.9.2-p180.

这是PHP中的示例代码:

$salt = "12345678901234567890123456789012";
$plain = "password";
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$cipher = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $plain, MCRYPT_MODE_ECB, $iv);

echo md5($cipher);
Run Code Online (Sandbox Code Playgroud)

输出: 6337137fd88148250fd135a43dbeb84a

在红宝石中:

require 'openssl'

salt = "12345678901234567890123456789012"
plain = "password";

c = OpenSSL::Cipher.new("AES-256-ECB")
c.encrypt
c.key = salt
cipher = c.update(plain)
cipher << c.final

puts Digest::MD5.hexdigest(cipher)
Run Code Online (Sandbox Code Playgroud)

输出: 18dee36145c07ab83452aefe2590c391

php ruby encryption aes

4
推荐指数
1
解决办法
1596
查看次数

为什么我必须睡觉或等待使用watir-webdriver和firefox?

好吧,我想评论watir-webdriver等待页面加载>这个主题,但因为我有1个代表我不能.

我正在将我的watir脚本升级到watir-webdriver,我在Firefox上运行的第一个测试产生了:

Selenium::WebDriver::Error::NoSuchElementError: Unable to locate element: {"method":"tag name","selector":"body"}
Run Code Online (Sandbox Code Playgroud)

当我所做的只是登录我的应用程序(工作正常),单击构建信息链接,并执行以下操作:

@browser.text
Run Code Online (Sandbox Code Playgroud)

这种情况一直发生 在这里阅读之后,我在点击之后和@ browser.text之前进行了一次睡眠并且它有效.我的结论显然是Firefox驱动程序在尝试之前没有等到页面加载

-> POST session/8607aaa2-d72d-448a-85e1-3f96a1766da1/element
{"value":"body","using":"tag name"}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是这是一个孤立的事件(调用@ browser.body,这不是一个完全典型的调用)或者我将不得不使用等待?如果我不能指望驱动程序等到浏览器处于就绪状态,那么看起来整个美丽的watir都会丢失.此外,是否有一个开发谷歌组或类似的东西为watir-webdriver?我觉得我会看到越来越多的问题(IE9的几个问题).我可能也会在Alister的博客上询问(哪个是摇滚,顺便说一句).

firefox webdriver watir watir-webdriver

4
推荐指数
1
解决办法
3945
查看次数

Android - org.ksoap2.soapfault无法投射

我正在尝试从Android客户端访问Java Web服务,但它显示错误:

"java.lang.classcastexception org.ksoap2.soapfault无法强制转换为org.ksoap2.serialization.soapobject"

你能帮助我吗?

这是我的客户端Web服务代码:

import java.lang.reflect.Method;

import android.app.Activity; 
import android.os.Bundle; 
import android.content.Context;
import android.content.Intent; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View;
import android.view.Window;
import android.widget.EditText;

import android.widget.TextView;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;
import org.ksoap2.transport.HttpTransportSE; 

public class Loginuser extends Activity{


public static final int MENU1 = Menu.FIRST; 
public static final int MENU2 = Menu.FIRST + 1; 
public static final int MENU3 = Menu.FIRST + 2; 
public static Context group;

    private static final String SOAP_ACTION = "";
    private …
Run Code Online (Sandbox Code Playgroud)

java android-ksoap2

4
推荐指数
1
解决办法
1万
查看次数

无法加载此类文件 - libxml_ruby for Windows

我的步骤是,

  1. 执行RubyInstaller.exe文件
  2. 安装红宝石
  3. 安装路径:c:\ ruby​​193
  4. 安装DevKit
  5. gem install libxml-ruby --platform x86-mswin32-60
  6. make test.rb文件

    要求'rubygems'
    需要'xml'

  7. ruby test.rb

  8. 打印错误消息

错误信息:

C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require':
126: The specified module could not be found    - C:/Ruby193/lib/ruby/gems/1.9.1/gems/lib
xml-ruby-1.1.3-x86-mswin32-60/lib/libxml_ruby.so (LoadError)
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/libxml-ruby-1.1.3-x86-mswin32-6    0/lib/libxml.rb:9:in `<top (required)>'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/libxml-ruby-1.1.3-x86-mswin32-6    0/lib/xml.rb:11:in `<top (required)>'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
        from test.rb:2:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我想要解决这个问题PLZ.帮我.

ruby gem libxml-ruby

4
推荐指数
1
解决办法
3462
查看次数

从标头获取值到模型中

我想知道是否有一种方法可以直接从模型中获取标题值.

# location.rb
class Location < ActiveRecord::Base
  puts request.header['key']
end
Run Code Online (Sandbox Code Playgroud)

让我们假装我们将一些值存储到头文件中,放入我使用的控制器中request.headers['key'].它有效,但进入模型不是

ruby ruby-on-rails

3
推荐指数
1
解决办法
7459
查看次数

未定义的方法"apply_finder_options"

我有一个未定义的方法错误'apply_finder_options'

_question.html.erb以及错误所在的位置

def self.unsolved(params)
    where(solved: false).paginate(page: params[:page], order: 'created_at DESC', per_page: 3)
  end

  def self.search(params)
Run Code Online (Sandbox Code Playgroud)

问题控制器

def show
   puts params
   @question = Question.find(params[:id])
   @answer = Answer.new
 end
Run Code Online (Sandbox Code Playgroud)

完整错误堆栈跟踪

activerecord (4.1.2) lib/active_record/relation/delegation.rb:136:in `method_missing'
activerecord (4.1.2) lib/active_record/relation/delegation.rb:99:in `method_missing'
will_paginate (3.0.7) lib/will_paginate/active_record.rb:168:in `paginate'
app/models/question.rb:12:in `unsolved'
app/controllers/questions_controller.rb:6:in `index'
actionpack (4.1.2) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.1.2) lib/abstract_controller/base.rb:189:in `process_action'
actionpack (4.1.2) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.1.2) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (4.1.2) lib/active_support/callbacks.rb:113:in `call'
activesupport (4.1.2) lib/active_support/callbacks.rb:113:in `call'
activesupport (4.1.2) lib/active_support/callbacks.rb:149:in `block in halting_and_conditional'
activesupport (4.1.2) lib/active_support/callbacks.rb:229:in `call' …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

3
推荐指数
1
解决办法
2475
查看次数

如何在Windows上"随时"创建宝石?

我想在Windows XP上运行"简单"的cron.所以gem install whenever我随时安装然后运行我的cron.rb

require 'rubygems' 
require 'whenever' 
every 1.days, :at => '5:30am' do 
  command "puts now" 
end 
Run Code Online (Sandbox Code Playgroud)

但它抱怨说

You don't have i18n installed in your application. 
Please add it to your Gemfile  and run bundle install
Run Code Online (Sandbox Code Playgroud)

所以我跑了gem install i18n,现在相同的代码给了我一个错误

C:\whenever>ruby cron.rb 
cron.rb:4: undefined method 'every' for main:Object (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

任何宝石工作时我都知道如何制作?

  • ruby 1.8.7(2010-08-16 patchlevel 302)[i386-mingw32]
  • 宝石1.3.7

本地宝石

aaronh-chronic (0.3.9)
activesupport (3.0.9)
backports (1.18.2)
daemons (1.1.0)
delayed_job (2.0.3)
eventmachine (0.12.10 x86-mswin32-60)
fastercsv (1.5.4)
haml (3.0.21)
i18n (0.6.0)
json …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems whenever

2
推荐指数
1
解决办法
3704
查看次数

缩短respond_with(:include => xxx)

我正在寻找一种方法来缩短:include =>:在respond_with中生成json的child.

这是一个例子,不确定它是否可能,但我想知道.

在控制器中:

@p = Parent.where('id = ?', params[:id])
respond_with(@p, :include => {:child1 => {}, :child2 => {}, :child3 => {:include => :grandchild1}})
Run Code Online (Sandbox Code Playgroud)

在我定义实例时,是否有一些包含这些内容?

也许是这样的:

@p = Parent.includes(:child1, :child2, :child3, :grandchild1).where('id = ?', params[:id])
respond_with(@p)
Run Code Online (Sandbox Code Playgroud)

基本上,我正在尝试干掉我的代码...我不想一直反复输入包含哈希...是否有一些只包括所有子对象的一次调用?

ruby ruby-on-rails include arel respond-with

2
推荐指数
1
解决办法
2504
查看次数

NSNetworkManager.ResolveListener消息Android

有人可以解释可以传递给回调的错误消息,即

public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode)
Run Code Online (Sandbox Code Playgroud)

我以前见过错误代码3,但不知道它意味着什么.文档似乎很好看......

干杯,

android

2
推荐指数
1
解决办法
2338
查看次数

如何获取表中的属性数

如何使用mysql获取表中的属性数。我想获得一张表中有多少列。

mysql

2
推荐指数
1
解决办法
539
查看次数

MySQL - 用户拒绝访问

所以,我创建了一个新用户

CREATE USER servname_shb IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)

授予他所有特权:

GRANT ALL ON *.* TO servname_shb;
Run Code Online (Sandbox Code Playgroud)

到目前为止没有错误.然后我尝试连接到数据库:

$dbhost = "localhost";
$dbname = "servname_shbusers";
$dbuser = "servname_shb";
$dbpass = "password";

$c = mysql_connect($dbhost,$dbuser,$dbpass) or die("Error:".mysql_error());
mysql_select_db($dbname) or die ("Error connecting to databse:".mysql_error());
Run Code Online (Sandbox Code Playgroud)

并得到一个错误:

Access denied for user 'servname_shb'@'localhost' (using password: YES) in <path>
Run Code Online (Sandbox Code Playgroud)

我尝试了FLUSH PRIVILEGES,删除并重新创建用户 - 没有效果.我究竟做错了什么?

php mysql permissions

0
推荐指数
1
解决办法
3万
查看次数

如何从rails 3路径中找到控制器和操作

这基本上是这个问题的rails 3版本.如果没有自己解析它,我如何从URL字符串中获取组件(控制器,操作,参数)?

该方法ActionController::Routing::Routes#recognize_path已被弃用,我不能得到它被替换的方法以相同的方式工作:

1.9.3p125 :019 > ActionDispatch::Routing::RouteSet.recognize_path('/accounts/new', {:method => :get})
NoMethodError: undefined method `recognize_path' for ActionDispatch::Routing::RouteSet:Class
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为它不是一个静态的方法.看源头也没有启发我.任何指针都会受到欢迎.

编辑:

ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]
Rails 3.2.3
Run Code Online (Sandbox Code Playgroud)

routing ruby-on-rails-3

0
推荐指数
1
解决办法
634
查看次数