新手问题 warning: constant OpenSSL::Cipher::Cipher is deprecated

sevk · November 16, 2018 · Last by sevk replied at November 26, 2018 · 4154 hits

这个警告如何去掉? 可以用别的什么库吗?

#!/usr/bin/env ruby                                                                         
require 'openssl'

# AES-128 ECB mode test vectors
KEY        = ["2b7e151628aed2a6abf7158809cf4f3c"].pack("H*")
PLAINTEXT  = ["6bc1bee22e409f96e93d7e117393172a"].pack("H*")
CIPHERTEXT = ["3ad77bb40d7a3660a89ecaf32466ef97"].pack("H*")

cipher = OpenSSL::Cipher::Cipher.new("aes-128-ecb")
cipher.key = KEY
cipher.padding = 0 # Padding is enabled by default o_O

puts "test encry: "
cipher.encrypt
ciphertext = cipher.update(PLAINTEXT) << cipher.final

if ciphertext == CIPHERTEXT
  puts "OK!"
else
  puts "FAILED!"
end

puts "test decry: "
cipher.reset
cipher.decrypt
plaintext = cipher.update(CIPHERTEXT) << cipher.final

if plaintext == PLAINTEXT
  puts "OK!"
else
  puts "FAILED!"
end
ecb1.rb:9: warning: constant OpenSSL::Cipher::Cipher is deprecated


直接使用 OpenSSL::Cipher 这个类就好了

Reply to so_zengtao

原来这么简单啊,你是怎么找到答案的? 👍

Reply to sevk

花了 10 秒钟看了一下文档 ... 😂

This class is only provided for backwards compatibility. Use OpenSSL::Cipher

Reply to so_zengtao

哦谢谢,我用 pry 的 show-doc OpenSSL::Cipher::Cipher,没显示。

You need to Sign in before reply, if you don't have an account, please Sign up first.