PRF(伪随机数函数)

Algorithms 专栏收录该内容
2 篇文章 0 订阅

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!!!

  • 2
    点赞
  • 3
    评论
  • 8
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

lunar521

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值