博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ruby实现SHA1PRNG
阅读量:5058 次
发布时间:2019-06-12

本文共 743 字,大约阅读时间需要 2 分钟。

工作中经常会遇到不同开发语言之间的接口加解密,我们的接口提供方用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 代码如下

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

 

转载于:https://www.cnblogs.com/lizhenjiang/p/8991951.html

你可能感兴趣的文章
C#:总结页面传值几种方法
查看>>
HDU 1159 - Common Subsequence [最长公共子序列]
查看>>
Python学习总结
查看>>
CamShift算法研究(基于opencv)
查看>>
BF算法
查看>>
DataTable 基本转换简单实例
查看>>
IOS-下载动画
查看>>
一步步构建iOS路由
查看>>
将一个txt里的A和B谈话内容获取出来并分别保存到A和B的txt文件中
查看>>
java获得真实IP代码
查看>>
failed to load the jni shared library
查看>>
工作区的颜值选择(中等)
查看>>
bzoj 1407: [Noi2002]Savage【扩展欧几里得+中国剩余定理】
查看>>
Python map,filter,reduce函数
查看>>
python中用ElementTree.iterparse()读取xml文件中的多层节点
查看>>
棋盘寻宝(微策略2012年校园招聘笔试题)
查看>>
Fence Repair
查看>>
Java实体书写规范
查看>>
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>