ruby - 用于压缩/加密字符串的 native ruby​​ 方法?

标签 ruby encryption compression

您好,是否有任何 native 函数(不安装其他 gem,或不从 shell 调用 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"?

同样要加密一些字符串?

最佳答案

来自 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"

关于ruby - 用于压缩/加密字符串的 native ruby​​ 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4721423/

相关文章:

ios - Objective-C 奇怪的解压缩行为导致文件损坏

ruby-on-rails - 使用 Ruby on Rails 设计 - 强制用户在首次登录时更改密码

java - Java 中的 RSA BadPaddingException - 在 Android 中加密在 JRE 中解密

c - C 示例中的 AES、Serpent 或 Twofish?

iOS:CCCrypt() kCCOptionECBMode 和 kCCModeCBC 哪个更安全

java - 在将字符串发送到服务器之前压缩它

java - 有没有办法让 Jruby 运行时实习所有字符串?

mysql - mysql 表中具有最大值的 activerecord ruby​​ 行

ruby - 如何将 "magically"代码添加到ruby中的所有公共(public)类方法?

xml - 窄带可扩展消息格式