$73 GRAYBYTE WORDPRESS FILE MANAGER $39

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 172.67.217.254 | ADMIN IP 216.73.216.23
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/alt/ruby18/lib64/ruby/1.8/

HOME
Current File : /opt/alt/ruby18/lib64/ruby/1.8//securerandom.rb
# = Secure random number generator interface.
#
# This library is an interface for secure random number generator which is
# suitable for generating session key in HTTP cookies, etc.
#
# It supports following secure random number generators.
#
# * openssl
# * /dev/urandom
#
# == Example
#
# # random hexadecimal string.
# p SecureRandom.hex(10) #=> "52750b30ffbc7de3b362"
# p SecureRandom.hex(10) #=> "92b15d6c8dc4beb5f559"
# p SecureRandom.hex(11) #=> "6aca1b5c58e4863e6b81b8"
# p SecureRandom.hex(12) #=> "94b2fff3e7fd9b9c391a2306"
# p SecureRandom.hex(13) #=> "39b290146bea6ce975c37cfc23"
# ...
#
# # random base64 string.
# p SecureRandom.base64(10) #=> "EcmTPZwWRAozdA=="
# p SecureRandom.base64(10) #=> "9b0nsevdwNuM/w=="
# p SecureRandom.base64(10) #=> "KO1nIU+p9DKxGg=="
# p SecureRandom.base64(11) #=> "l7XEiFja+8EKEtY="
# p SecureRandom.base64(12) #=> "7kJSM/MzBJI+75j8"
# p SecureRandom.base64(13) #=> "vKLJ0tXBHqQOuIcSIg=="
# ...
#
# # random binary string.
# p SecureRandom.random_bytes(10) #=> "\016\t{\370g\310pbr\301"
# p SecureRandom.random_bytes(10) #=> "\323U\030TO\234\357\020\a\337"
# ...

begin
  require 'openssl'
rescue LoadError
end

module SecureRandom
  # SecureRandom.random_bytes generates a random binary string.
  #
  # The argument n specifies the length of the result string.
  #
  # If n is not specified, 16 is assumed.
  # It may be larger in future.
  #
  # If secure random number generator is not available,
  # NotImplementedError is raised.
  def self.random_bytes(n=nil)
    n ||= 16
    if defined? OpenSSL::Random
      @pid = 0 if !defined?(@pid)
      pid = $$
      if @pid != pid
        now = Time.now
        ary = [now.to_i, now.usec, @pid, pid]
        OpenSSL::Random.seed(ary.join('.'))
        @pid = pid
      end
      return OpenSSL::Random.random_bytes(n)
    end
    if !defined?(@has_urandom) || @has_urandom
      @has_urandom = false
      flags = File::RDONLY
      flags |= File::NONBLOCK if defined? File::NONBLOCK
      flags |= File::NOCTTY if defined? File::NOCTTY
      flags |= File::NOFOLLOW if defined? File::NOFOLLOW
      begin
        File.open("/dev/urandom", flags) {|f|
          unless f.stat.chardev?
            raise Errno::ENOENT
          end
          @has_urandom = true
          ret = f.readpartial(n)
          if ret.length != n
            raise NotImplementedError, "Unexpected partial read from random device"
          end
          return ret
        }
      rescue Errno::ENOENT
        raise NotImplementedError, "No random device"
      end
    end
    raise NotImplementedError, "No random device"
  end

  # SecureRandom.hex generates a random hex string.
  #
  # The argument n specifies the length of the random length.
  # The length of the result string is twice of n.
  #
  # If n is not specified, 16 is assumed.
  # It may be larger in future.
  #
  # If secure random number generator is not available,
  # NotImplementedError is raised.
  def self.hex(n=nil)
    random_bytes(n).unpack("H*")[0]
  end

  # SecureRandom.base64 generates a random base64 string.
  #
  # The argument n specifies the length of the random length.
  # The length of the result string is about 4/3 of n.
  #
  # If n is not specified, 16 is assumed.
  # It may be larger in future.
  #
  # If secure random number generator is not available,
  # NotImplementedError is raised.
  def self.base64(n=nil)
    [random_bytes(n)].pack("m*").delete("\n")
  end

  # SecureRandom.random_number generates a random number.
  #
  # If an positive integer is given as n,
  # SecureRandom.random_number returns an integer:
  # 0 <= SecureRandom.random_number(n) < n.
  #
  # If 0 is given or an argument is not given,
  # SecureRandom.random_number returns an float:
  # 0.0 <= SecureRandom.random_number() < 1.0.
  def self.random_number(n=0)
    if 0 < n
      hex = n.to_s(16)
      hex = '0' + hex if (hex.length & 1) == 1
      bin = [hex].pack("H*")
      mask = bin[0]
      mask |= mask >> 1
      mask |= mask >> 2
      mask |= mask >> 4
      begin
        rnd = SecureRandom.random_bytes(bin.length)
        rnd[0] = (rnd[0] & mask).chr
      end until rnd < bin
      rnd.unpack("H*")[0].hex
    else
      # assumption: Float::MANT_DIG <= 64
      i64 = SecureRandom.random_bytes(8).unpack("Q")[0]
      Math.ldexp(i64 >> (64-Float::MANT_DIG), -Float::MANT_DIG)
    end
  end
end


Current_dir [ NOT WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
3 Mar 2024 10.50 PM
root / root
0755
bigdecimal
--
3 Mar 2024 10.48 PM
root / linksafe
0755
cgi
--
3 Mar 2024 10.48 PM
root / linksafe
0755
date
--
3 Mar 2024 10.48 PM
root / linksafe
0755
digest
--
3 Mar 2024 10.48 PM
root / linksafe
0755
dl
--
3 Mar 2024 10.48 PM
root / linksafe
0755
drb
--
3 Mar 2024 10.48 PM
root / linksafe
0755
io
--
3 Mar 2024 10.48 PM
root / linksafe
0755
irb
--
3 Mar 2024 10.48 PM
root / linksafe
0755
net
--
3 Mar 2024 10.48 PM
root / linksafe
0755
openssl
--
3 Mar 2024 10.48 PM
root / linksafe
0755
optparse
--
3 Mar 2024 10.48 PM
root / linksafe
0755
racc
--
3 Mar 2024 10.48 PM
root / linksafe
0755
rdoc
--
3 Mar 2024 10.48 PM
root / linksafe
0755
rexml
--
3 Mar 2024 10.48 PM
root / linksafe
0755
rinda
--
3 Mar 2024 10.48 PM
root / linksafe
0755
rss
--
3 Mar 2024 10.48 PM
root / linksafe
0755
runit
--
3 Mar 2024 10.48 PM
root / linksafe
0755
shell
--
3 Mar 2024 10.48 PM
root / linksafe
0755
soap
--
3 Mar 2024 10.48 PM
root / linksafe
0755
test
--
3 Mar 2024 10.48 PM
root / linksafe
0755
uri
--
3 Mar 2024 10.48 PM
root / linksafe
0755
webrick
--
3 Mar 2024 10.48 PM
root / linksafe
0755
wsdl
--
3 Mar 2024 10.48 PM
root / linksafe
0755
x86_64-linux
--
3 Mar 2024 10.50 PM
root / root
0755
xmlrpc
--
3 Mar 2024 10.48 PM
root / linksafe
0755
xsd
--
3 Mar 2024 10.48 PM
root / linksafe
0755
yaml
--
3 Mar 2024 10.48 PM
root / linksafe
0755
English.rb
5.598 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
Env.rb
0.268 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
abbrev.rb
2.503 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
base64.rb
3.37 KB
16 Jul 2007 3.47 PM
root / linksafe
0644
benchmark.rb
17.729 KB
10 Feb 2008 3.24 PM
root / linksafe
0644
cgi-lib.rb
6.891 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
cgi.rb
73.737 KB
14 Dec 2009 2.40 AM
root / linksafe
0644
complex.rb
12.839 KB
3 Aug 2009 5.59 AM
root / linksafe
0644
csv.rb
24.459 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
date.rb
53.024 KB
8 Jun 2010 4.45 AM
root / linksafe
0644
date2.rb
0.125 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
debug.rb
20.609 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
delegate.rb
8.808 KB
16 Jul 2009 12.35 AM
root / linksafe
0644
digest.rb
1.118 KB
28 Jul 2007 12.40 AM
root / linksafe
0644
drb.rb
0.019 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
e2mmap.rb
4.037 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
erb.rb
21.38 KB
23 Feb 2009 5.44 PM
root / linksafe
0644
eregex.rb
0.476 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
expect.rb
0.618 KB
18 Feb 2008 1.17 AM
root / linksafe
0644
fileutils.rb
42.229 KB
20 May 2011 10.29 PM
root / linksafe
0644
finalize.rb
5.376 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
find.rb
1.836 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
forwardable.rb
6.163 KB
6 Jun 2008 8.05 AM
root / linksafe
0644
ftools.rb
6.168 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
generator.rb
8.1 KB
10 Apr 2008 10.52 AM
root / linksafe
0644
getoptlong.rb
14.877 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
getopts.rb
2.252 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
gserver.rb
6.431 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
importenv.rb
0.576 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
ipaddr.rb
21.957 KB
12 Jul 2008 3.08 PM
root / linksafe
0644
irb.rb
7.43 KB
9 Aug 2009 8.44 AM
root / linksafe
0644
jcode.rb
4.297 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
kconv.rb
8.124 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
logger.rb
17.588 KB
30 May 2011 2.08 AM
root / linksafe
0644
mailread.rb
1.284 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
mathn.rb
5.419 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
matrix.rb
27.208 KB
24 Jan 2009 3.02 PM
root / linksafe
0644
md5.rb
0.401 KB
6 Mar 2007 10.09 AM
root / linksafe
0644
mkmf.rb
50.646 KB
4 Dec 2010 6.34 AM
root / linksafe
0644
monitor.rb
7.926 KB
25 Nov 2009 7.45 AM
root / linksafe
0644
mutex_m.rb
2.072 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
observer.rb
5.154 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
open-uri.rb
20.49 KB
8 Oct 2007 11.16 AM
root / linksafe
0644
open3.rb
2.098 KB
14 Dec 2009 4.28 AM
root / linksafe
0644
openssl.rb
0.562 KB
22 Nov 2010 7.21 AM
root / linksafe
0644
optparse.rb
47.121 KB
20 Feb 2009 11.43 AM
root / linksafe
0644
ostruct.rb
3.354 KB
26 May 2009 12.06 PM
root / linksafe
0644
parsearg.rb
1.554 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
parsedate.rb
1.327 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
pathname.rb
29.386 KB
23 Nov 2010 8.21 AM
root / linksafe
0644
ping.rb
1.481 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
pp.rb
15.966 KB
7 Jun 2007 10.06 AM
root / linksafe
0644
prettyprint.rb
18.335 KB
16 Feb 2007 7.53 PM
root / linksafe
0644
profile.rb
0.088 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
profiler.rb
1.589 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
pstore.rb
11.149 KB
6 Jun 2008 8.05 AM
root / linksafe
0644
rational.rb
12.05 KB
8 Jun 2010 5.02 AM
root / linksafe
0644
readbytes.rb
0.815 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
resolv-replace.rb
1.553 KB
8 Aug 2008 1.58 AM
root / linksafe
0644
resolv.rb
56.831 KB
23 Dec 2010 3.22 AM
root / linksafe
0644
rss.rb
0.492 KB
21 Oct 2007 12.19 PM
root / linksafe
0644
rubyunit.rb
0.176 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
scanf.rb
20.633 KB
20 Jan 2009 3.23 AM
root / linksafe
0644
securerandom.rb
4.267 KB
10 Dec 2011 12.17 PM
root / linksafe
0644
set.rb
27.076 KB
9 Jun 2008 9.20 AM
root / linksafe
0644
sha1.rb
0.408 KB
6 Mar 2007 10.09 AM
root / linksafe
0644
shell.rb
4.655 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
shellwords.rb
3.99 KB
21 Mar 2008 12.16 PM
root / linksafe
0644
singleton.rb
8.077 KB
3 Jul 2008 11.14 AM
root / linksafe
0644
sync.rb
6.086 KB
19 Feb 2009 4.41 PM
root / linksafe
0644
tempfile.rb
4.861 KB
21 Apr 2008 9.43 AM
root / linksafe
0644
thread.rb
0.102 KB
13 Feb 2007 7.39 PM
root / linksafe
0644
thwait.rb
4.316 KB
8 Jun 2010 7.08 AM
root / linksafe
0644
time.rb
31.58 KB
6 Jun 2008 8.05 AM
root / linksafe
0644
timeout.rb
3.005 KB
8 Jun 2010 6.24 AM
root / linksafe
0644
tmpdir.rb
3.694 KB
26 Jan 2009 2.12 AM
root / linksafe
0644
tracer.rb
2.727 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
tsort.rb
7.993 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
un.rb
4.537 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
uri.rb
0.693 KB
15 Apr 2008 9.41 AM
root / linksafe
0644
weakref.rb
2.684 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
webrick.rb
0.792 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
yaml.rb
12.355 KB
19 Apr 2008 11.45 AM
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF