Ruby中如何实现python的crypt.crypt?

0 投票
2 回答
590 浏览
提问于 2025-04-15 16:42

你好,我需要在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)

撰写回答