压缩/加密字符串的原生ruby方法?

压缩/加密字符串的原生ruby方法?,ruby,encryption,compression,Ruby,Encryption,Compression,嗨,有没有任何本机函数(不安装其他gem,或者不从shell调用openssl)来压缩字符串或加密字符串 有点像mysql压缩 “非常长且松散的字符串”。压缩 output=“8d20\1l\201” “8d20\1l\201”。解压缩 output=“非常长且松散的字符串”? 同样要加密一些字符串?和。在中有一个使用OpenSSL的示例。From 来自的加密 需要“openssl” 需要“摘要/sha1” c=OpenSSL::Cipher::Cipher.new(“aes-256-cb

嗨,有没有任何本机函数(不安装其他gem,或者不从shell调用openssl)来压缩字符串或加密字符串

有点像mysql压缩


“非常长且松散的字符串”。压缩
output=“8d20\1l\201”

“8d20\1l\201”。解压缩
output=“非常长且松散的字符串”?

同样要加密一些字符串?

和。在中有一个使用OpenSSL的示例。

From

来自的加密

需要“openssl”
需要“摘要/sha1”
c=OpenSSL::Cipher::Cipher.new(“aes-256-cbc”)
c、 加密
#你的通行证是用来加密/解密的
c、 key=key=Digest::SHA1.hexdigest(“您的通行证”)
c、 iv=iv=c.random_iv
e=c.更新(“加密此”)

并不是说你真的暗示了任何操作顺序,而是说如果先对文本进行压缩然后再进行加密,你会得到更好的压缩率。如果先对文件进行加密,你实际上不会得到压缩。阅读以下内容:根据Zlib文档,
Zlib::Deflate.Deflate(string[,level])
Zlib::Inflate.Inflate(string[,level])
与上述放气/充气方法“几乎等同”。
  # 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
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"