PRF(伪随机数函数)

PRF(伪随机数函数)

看到自己曾经写过一个随机数的文章,当然内容没什么太有意思的东西。今天想着好像也没什么可写的,那么就写个已经存在的PRF吧。

随机数在服务端应用挺广泛的,经常会使用到,但是大体上都是调用系统函数。有一些的实现就不是很安全,比如那个简单的以时间为种子的随机数~~。

更安全的随机数可以通过硬件来获取,当然这得需要相应的硬件支持。其实,在TLS规范中已经提供了一种不错的伪随机生成函数,具体内容可以参考 tls1.2

当然,估计大家也不会看~。这里直接拿过来。

PRF

P_hash(secret, seed) = HMAC_hash(secret, A(1) + seed) +
                             HMAC_hash(secret, A(2) + seed) +
                             HMAC_hash(secret, A(3) + seed) + ...
                             
PRF(secret, label, seed) = P_<hash>(secret, label + seed)

说明
	+  代表连接
	A() 表示如下
         A(0) = seed
         A(i) = HMAC_hash(secret, A(i-1))
    hash指的是单向hash函数,如sha1,sha256等等。
    以sha256为例,一次HMAC产生的数据为32bytes。因此,如果想得到80bytes数据,
    需要i=3,这样会得到96bytes数据,将后16bytes丢弃即可。
    label必须是ASCII字符串,不包含结尾的'\0'。
    
      

enjoy!!!

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值