在ruby中,如何解密由“crypted”方法加密的字符串

时间:2009-11-07 17:51:44

标签: ruby encryption

在ruby中,我使用“crypt”方法加密字符串,例如:

str =“123”

strencrypt = str.crypt(“aa”)

我想从strencrypt解密并获取原始字符串。我怎样才能做到这一点? 我曾尝试再次使用crypt方法:

str_ori = strencrypt.crypt(“aa”)

但它无法返回“123”。

任何人都可以帮助我?

3 个答案:

答案 0 :(得分:9)

你不能 - 它是单向加密。如果您想知道为什么它有用,一个标准用例是进行密码验证:

pass = "helloworld"
$salt = "qw"
$cpass = pass.crypt($salt)

def validate_pass(guess)
  guess.crypt($salt) == $cpass
end

while true
  puts "enter password"
  pass = gets
  if validate_pass(pass)
    print "validated"
    break
  end
end

请注意,validate_pass函数既不需要也不需要访问原始明文密码。

答案 1 :(得分:3)

你做不到。 str.cryptone-way hash function

答案 2 :(得分:3)

str.crypt是单向加密哈希。你无法解密字符串。

有关单向加密哈希的解释,请参阅this question