2009-11-07 43 views
4

在红宝石加密的字符串,我使用“隐窝”方法加密的字符串,例如:在红宝石,如何解密其通过“加密后”的方法

STR =“123”

strencrypt = str.crypt(“aa”)

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

str_ori = strencrypt.crypt( “AA”)

但它不能返回 “123”。

任何人都可以帮到我吗?

回答

3

str.crypt是一种单向加密散列。你不能解密字符串。

请参阅this question了解单向密码散列的一般情况。

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功能既没有,也不需要访问原始明文密码。