0

このRubyコードを持っている:

require 'openssl'
require 'securerandom'

class AuthRsa

def initialize(public_key, private_key)

  @public_key = OpenSSL::PKey::RSA.new(public_key)
  @private_key = OpenSSL::PKey::RSA.new(private_key)
  @key = SecureRandom.base64(16)
end

def valid?
  crypt_key = @public_key.public_encrypt(@key)
  return @key == @private_key.private_decrypt(crypt_key)
end
end

正しい公開鍵と秘密鍵を使用してクラスをテストする場合はすべて問題ありませんが、偽の証明書を送信すると、次のエラーでテストが失敗します:OpenSSL :: PKey :: RSAエラー:パディングチェックに失敗しました

エラーの代わりにfalseを返すようにメソッドprivate_decryptを設定することは可能ですか?

4

1 に答える 1

1

はい、あなたはただするでしょう:

return (@key == @private_key.private_decrypt(crypt_key)) rescue false
于 2012-11-06T12:33:11.067 に答える