JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – Ruby openssl中的AES等价物?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Gibberish图书馆提供了一个不错的CBC算法……
// In Jascascript
GibberishAEs.enc("Made with Gibberish\n","password");
// Outputs: "U2FsdGVkX1+21O5RB08bavFTq7Yq/gChmXrO3f00tvJaT55A5pPvqw0zFVnHSW1o"

# On the command line
echo "U2FsdGVkX1+21O5RB08bavFTq7Yq/gChmXrO3f00tvJaT55A5pPvqw0zFVnHSW1o" | 
  openssl enc -d -aes-256-cbc -a -k password

我怎样才能在ruby中进行解密?直截了当的方式不起作用……

require 'openssl'

def aes(m,k,t)
  (aes = OpenSSL::Cipher::Cipher.new('aes-256-cbc').send(m)).key = k
  aes.update(t) << aes.final
end

def encrypt(key,text)
  aes(:encrypt,key,text)
end

def decrypt(key,text)
  aes(:decrypt,text)
end

def p k
  Digest::SHA256.digest(k) ## what goes here???
end

require 'base64'
def t x
  ## also tried.. simply returning x...
  Base64.decode64(X)      
end


text = "U2FsdGVkX1+21O5RB08bavFTq7Yq/gChmXrO3f00tvJaT55A5pPvqw0zFVnHSW1o"
pass = "password"

decrypt(p(pass),t(text))

解决方法

深入研究Gibberish代码……提供答案的线索.以及为什么传统机制不起作用.
dec = function(String,pass) {
    // String,password in plaintext
    var cryptArr = Base64.decode(String),salt = cryptArr.slice(8,16),pbe = openSSLKey(s2a(pass),salt),key = pbe.key,iv = pbe.iv;
    cryptArr = cryptArr.slice(16,cryptArr.length);
    // Take off the Salted__ffeeddcc
    String = rawDecrypt(cryptArr,iv);
    return String;
},

转换为ruby现在相当微不足道.请注意我个人未来的参.

require 'base64'
require 'openssl'

def decode(k,t)
  cryptArr = Base64.decode64(t)
  salt     = cryptArr[8..15]
  data     = cryptArr[16..-1] 

  aes = OpenSSL::Cipher::Cipher.new('AES-256-CBC').decrypt
  aes.pkcs5_keyivgen(k,salt,1)
  s = aes.update(data) + aes.final
end

orig = "Made with Gibberish\n"
cipr = "U2FsdGVkX1+21O5RB08bavFTq7Yq/gChmXrO3f00tvJaT55A5pPvqw0zFVnHSW1o"
pass = "password"

puts decode(pass,cipr)

大佬总结

以上是大佬教程为你收集整理的javascript – Ruby openssl中的AES等价物?全部内容,希望文章能够帮你解决javascript – Ruby openssl中的AES等价物?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。