IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> BLAKE 哈希函数 及 ChaCha20流密码 -> 正文阅读

[数据结构与算法]BLAKE 哈希函数 及 ChaCha20流密码

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

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-26 15:23:34  更:2022-05-26 15:23:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 -2025/2/6 5:39:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码