在ruby中,我使用“crypt”方法加密字符串,例如:
str =“123”
strencrypt = str.crypt(“aa”)
我想从strencrypt解密并获取原始字符串。我怎样才能做到这一点? 我曾尝试再次使用crypt方法:
str_ori = strencrypt.crypt(“aa”)
但它无法返回“123”。
任何人都可以帮助我?
答案 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.crypt
是one-way hash function。
答案 2 :(得分:3)
str.crypt
是单向加密哈希。你无法解密字符串。
有关单向加密哈希的解释,请参阅this question。