ruby實現SHA1PRNG

工做中常常會遇到不一樣開發語言之間的接口加解密,咱們的接口提供方用Java語言開發,用到了SHA1PRNG
PRNG 是一種僞隨機數生成器,它通常都是使用特定的隨機種子,根據某個特定的算法生成僞隨機序列,一般用於給其餘加解密算法提供種子。
Java SecureRandom 兩種僞隨機數算法( SHA1PRNG 與 NativePRNG )

SHA1PRNG 實現原理是經過不斷對當前Hash值進行再一次SHA1哈希而成,當給定種子的狀況下,每次輸出都是基於上次的結果。

Java 代碼
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
random.setSeed(encryptKey.getBytes());
kgen.init(128, random);
 
 

   Ruby 代碼以下java

def sha1_prng(key)
      key = OpenSSL::Digest.digest("SHA1", key)
      key_bytes = OpenSSL::Digest.digest("SHA1", key).bytes[0..15]
      for i in 0...key_bytes.size
        if key_bytes[i] > 128
          key_bytes[i] = key_bytes[i] - 256
        end
      end
      key_bytes.pack('c*').force_encoding("UTF-8")
    end
相關文章
相關標籤/搜索