1. 引言

BLAKE和BLAKE2为基于Dan Bernstein的ChaCha流密码的哈希函数。

BLAKE作为SHA-3算法的竞争者之一,在最后一轮输给了Keccak。

ChaCha基于4x4 array of words操作。而BLAKE重复将8-word哈希值与16个message words结合,将其ChaCha结果裁剪获得下一个哈希值。

与SHA-2算法类似,BLAKE也主要分为BLAKE-256和BLAKE-512。

BLAKE系列哈希算法有:

  • BLAKE-256:使用32-bit words,输出的digest size为256 bit。
  • BLAKE-224:使用32-bit words,输出的digest size为224 bit。
  • BLAKE-512:使用64-bit words,输出的digest size为512 bit。
  • BLAKE-384:使用64-bit words,输出的digest size为384 bit。

2. BLAKE2

BLAKE2为对BLAKE的改进版本,于2012年12月提出。BLAKE2与BLAKE的具体差异在于:

  • BLAKE2移除了BLAKE round函数中的message words与常量的加法运算。
  • BLAKE2改了2个rotation常量
  • BLAKE2简化了padding
  • BLAKE2增加了parameter block,该parameter block会与初始向量进行XOR运算
  • BLAKE2b(BLAKE-512的继任者):将round数由16减为12。
  • BLAKE2s(BLAKE-256的继任者):将round数由14减为10。

3. ChaCha20

ChaCha流密码由Dan Bernstein于2008年发明,在Salsa基础上进行了改进。由于其具有20轮的加密运算,因此也称为ChaCha20。每一轮包含如下4次“quarter-round”函数运算:

a += b; d ^= a; d <<<= 16;
c += d; b ^= c; b <<<= 12;
a += b; d ^= a; d <<<= 8;
c += d; b ^= c; b <<<= 7;

其中a,b,c,d为32-bit words,<<<为bitwise left rotation。

Mina中对ChaCha的以上4个“quarter-round”函数分别进行了circuit constraint设计,分别实现了相应的gate:

  • ChaCha0 gate:对应a += b; d ^= a; d <<<= 16;
  • ChaCha1 gate:对应c += d; b ^= c; b <<<= 12;
  • ChaCha2 gate:对应a += b; d ^= a; d <<<= 8;
  • ChaChaFinal gate:对应c += d; b ^= c; b <<<= 7;

参考资料

[1] BLAKE (hash function)
[2] The ChaCha Stream Cipher for Transport Layer Security
[3] chacha20-poly1305

BLAKE 哈希函数 及 ChaCha20流密码相关推荐

  1. 现代密码学5.4--对哈希函数的攻击

    现代密码学5.4--对哈希函数的攻击 生日攻击 生日问题 博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan K ...

  2. 现代密码学5.1--哈希函数定义

    现代密码学5.1--哈希函数定义 密码学的假设 抗碰撞哈希函数定义 与数据结构中定义的哈希函数的不同 哈希函数的密钥 安全性:抗碰撞哈希函数>抗二次原像/抗目标碰撞哈希函数>抗原像哈希函数 ...

  3. 她破解哈希函数算法:坚持10年做一件事一定能做成

    今年9月7日,2019未来科学大奖揭晓,这项设立4年的大奖迎来首位女性得主--密码学家王小云.在信息时代,金融服务.网络安全等背后都离不开密码系统的"护航".在大众眼中,密码带着神 ...

  4. 不同表结构数据迁移_数据结构:哈希 哈希函数 哈希表

    写在前面 希望你们看了能够有所收获,同时觉得不错的朋友可以点赞和关注下我,以后还会有更多精选文章分享给大家!大家可以关注一下java提升专栏 java提升​zhuanlan.zhihu.com 什么是 ...

  5. Hash+哈希+哈希函数

    Hash+哈希+哈希函数 hash == 散列 == 哈希 是一种有损压缩技术 是一种数字指纹技术 哈希是一种加密算法 哈希函数(Hash Function),也称为散列函数或杂凑函数.哈希函数是一个 ...

  6. mysql 自定义哈希函数_C++ STL无序容器自定义哈希函数和比较规则(超级详细)...

    前面在讲解 unordered_map.unordered_multimap.unordered_set 以及 unordered_multiset 这 4 种无序关联式容器(哈希容器)时,遗留过一个 ...

  7. 字符串哈希函数(String Hash Functions)

    哈希函数举例 http://www.cse.yorku.ca/~oz/hash.html Node.js使用的哈希函数 https://www.npmjs.org/package/string-has ...

  8. 哈希函数的原理及应用

    哈希(Hash)函数又称为散列函数.杂凑函数.它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程. 哈希函数可以将满足要求的任意长度的输入经过变换后得到固定长度的输出.这 ...

  9. 认识哈希函数(散列函数)

    哈希函数(散列函数),哈希函数的输入域可以是非常大的范围,比如任意一个字符串,但是输出域是固定的范围,假设为S,并具有如下性质: 1.典型的哈希函数都有无限的输入值域 2.当给哈希函数传入相同的输入值 ...

最新文章

  1. Numpy练习题-锻炼手写机器学习模型的能力
  2. α稳定分布噪声基本原理及基于Chambers Mallows Stuck算法生成噪声并对信号加噪
  3. Vite + React 组件开发实践
  4. python是语言还是软件_程序开发语言之Python:是追逐还是坚守?
  5. SpringBoot : 定制化Bean的利器:BeanPostProcessor BeanFactoryPostProcessor
  6. sql server 统计_看SQL Server 2016中的新实时查询统计信息
  7. c语言编写界面图形表示,「分享」C语言如何编写图形界面
  8. Linux搭建深度神经网络,linux服务器搭建深度学习环境
  9. PDF如何复制页面,PDF复制页面这种方法就够了
  10. Git clean简介
  11. openlayers 地图上加图标_Openlayers绘制地图标注
  12. 1260Completed String
  13. 古月居ROS入门21讲——10-12.Publisher和Subscriber的编程实现 话题消息的定义与使用
  14. DNS资源纪录(Resource Record)介绍
  15. 五子棋游戏-1(绘制棋盘)
  16. 指令能被计算机硬件理解并执行,计算机
  17. FontStruct——制作你自己的个性化字体
  18. Linux exec函数
  19. Flink学习笔记(八):flink热词统计
  20. 计算机组装与维修学哪些,计算机组装与维修学习知识点总结计划.docx

热门文章

  1. C语言:会员管理系统
  2. Activiti(工作流)如何关联业务表
  3. 自制编程语言crowbar(v0.1)构建解析器时分配内存
  4. 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个 嫌疑犯的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说
  5. 什么是TRIZ(发明问题的解决理论)?
  6. 移动端开发之APP消息推送
  7. 【STM32H7教程】第25章 STM32H7的TCM,SRAM等五块内存基础知识
  8. 在vue项目中引入element,并改变主题色
  9. 中国科技论文统计结果
  10. 在DLAP221上部署容器进行推理操作