lib/poly_pseudo/util.rb in poly_pseudo-0.1.2 vs lib/poly_pseudo/util.rb in poly_pseudo-0.1.3

- old
+ new

@@ -41,31 +41,16 @@ raise "specified p = #{p.inspect} is wrong!" unless pHash2 == pHash m end - def self.i2osp(x, len = nil) - raise ArgumentError, "integer too large" if len && x >= 256**len - - StringIO.open do |buffer| - while x > 0 - b = (x & 0xFF).chr - x >>= 8 - buffer << b - end - s = buffer.string - s.force_encoding(Encoding::BINARY) if s.respond_to?(:force_encoding) - s.reverse! - s = len ? s.rjust(len, "\0") : s - end - end - def self.mgf1(z, l) t = '' - (0..(l / 10)).each { |i| - t += Digest::SHA384.digest(z + i2osp(i, 4)) - } + n = (l - 1) / 48 + 1 + n.times do |i| + t << Digest::SHA384.digest(z + [i].pack('N')) + end t[0...l] end def self.xor s1, s2