родные методы ruby ​​для сжатия / шифрования строк? - PullRequest
6 голосов
/ 18 января 2011

Привет, есть ли какая-нибудь встроенная функция (не устанавливать другой гем или не вызывать openssl из оболочки) для сжатия строки или шифрования строки?

вроде как MySQL компресс.

"a very long and loose string".compress <br/> output = "8d20\1l\201"

"8d20\1l\201".decompress<br/> output = "a very long and loose string"?

и аналогично, чтобы зашифровать некоторую строку?

Ответы [ 2 ]

14 голосов
/ 18 января 2011

Из http://ruby -doc.org / stdlib / libdoc / zlib / rdoc / classes / Zlib.html

  # aka compress
  def deflate(string, level)
    z = Zlib::Deflate.new(level)
    dst = z.deflate(string, Zlib::FINISH)
    z.close
    dst
  end

  # aka decompress
  def inflate(string)
    zstream = Zlib::Inflate.new
    buf = zstream.inflate(string)
    zstream.finish
    zstream.close
    buf
  end

Шифрование из http://snippets.dzone.com/posts/show/991

require 'openssl'
require 'digest/sha1'
c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
c.encrypt
# your pass is what is used to encrypt/decrypt
c.key = key = Digest::SHA1.hexdigest("yourpass")
c.iv = iv = c.random_iv
e = c.update("crypt this")
e << c.final
puts "encrypted: #{e}\n"
c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
c.decrypt
c.key = key
c.iv = iv
d = c.update(e)
d << c.final
puts "decrypted: #{d}\n"
5 голосов
/ 18 января 2011

OpenSSL и Zlib .В этом вопросе .

приведен пример использования OpenSSL.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...