提交 1dfebd4f 编写于 作者: M Michael Koziarski

1.8 compatibility for random_number method on SecureRandom.

1.9 has its own version.
上级 923eb956
......@@ -164,13 +164,13 @@ def self.random_number(n=0)
hex = n.to_s(16)
hex = '0' + hex if (hex.length & 1) == 1
bin = [hex].pack("H*")
mask = bin[0].ord
mask = bin[0]
mask |= mask >> 1
mask |= mask >> 2
mask |= mask >> 4
begin
rnd = SecureRandom.random_bytes(bin.length)
rnd[0] = (rnd[0].ord & mask).chr
rnd[0] = rnd[0] & mask
end until rnd < bin
rnd.unpack("H*")[0].hex
else
......
......@@ -12,4 +12,8 @@ def test_hex
b2 = ActiveSupport::SecureRandom.hex(64)
assert_not_equal b1, b2
end
def test_random_number
assert ActiveSupport::SecureRandom.random_number(5000) < 5000
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册