Ruby中如何实现python的crypt.crypt?
你好,我需要在Ruby中写这段代码。我不知道怎么在Ruby里写crypt.crypt这个方法,有什么想法吗?
(我想模拟Linux命令.htpasswd)
import random
import crypt
letters = 'abcdefghijklmnopqrstuvwxyz' \
'ABCDEFGHIJKLMNOPQRSTUVWXYZ' \
'0123456789/.'
salt = random.choice(letters) + random.choice(letters)
password = "bla"
print crypt.crypt(password, salt)
2 个回答
3
乔丹已经跟你讲过String#crypt了,所以我就给你展示一个更简单的方法来创建你的字母数组:
letters = [*'a'..'z'] + [*'A'..'Z'] + [*0..9] + %w(/ .)
更新:因为这个内容在两年多后得到了点赞,我也可以顺便加上1.9版本的做法(使用多个展开符和字符字面量):
letters = [*?a..?z, *?A..?Z, *0..9, ?/, ?.]
1
我认为Ruby中的 String#crypt 和Python的crypt.crypt是相似的。所以在Ruby中,你的代码可以写成这样:
letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/.'
salt = letters[rand letters.length].chr + letters[rand letters.length].chr
password = "bla"
puts password.crypt(salt)