【密码学】一文读懂RC6分组加密算法

admin 2022年9月17日17:55:21CTF专场评论4 views1639字阅读5分27秒阅读模式

【密码学】一文读懂RC6分组加密算法

【密码学】一文读懂RC6分组加密算法

本文呢,我们接着来看一下RC系列的算法,这次我们来看一下RC6这个算法的相关知识,RC6是从RC5衍生而来的对称加密算法,它是由Rivest、 Matt Robshaw、Ray Sidney设计,也是当时AES的5个决赛候选算法之一。

建议如果不是很了解RC5的读者可以先去回顾一下RC5的相关知识,看完了RC5然后再来看RC6就会发现RC6和RC5的基本结构还是蛮相似的,接下来的文章也会时不时的来和RC5对比对比,所以建议如果还没看过RC5的读者去看一下RC5的基本结构,好了,我又来啰嗦了这么多,接下来我们一起来看一下RC6的具体结构吧。

参数选择

这里RC6也是可以参数化的,具体参数的个数和RC5是一样的,只不过参数范围会大一些。

  • w: 这个是字长度,因为RC6是基于字来进行加密的,对于每一个字含有 个字节,一般来说我们会取w为32bit,通常的可选值为16、32和64,对于RC6来说,是基于双字进行处理的,也就是每一个分块的长度实际上是4w。
  • r: 这个是轮数,同样的在密钥扩展当中,S表含有 个字,对于轮数的取值范围是0-255
  • b: 对于RC6来说,他可以支持到2040位长度的密钥。

记号以及操作符

  • +: 加法运算,这里我们的加法运算是在模 的加法运算,不做特殊说明,后文的加法运算都是指的这一个
  • : 异或运算,这个没什么好说的
  • <<<: 左移运算,这个同样没有什么好说的
  • : 右移运算,这个同样没有什么好说的

  • : 乘法运算,这个也是同样的需要在模 上的乘法运算,同样的,这也是比RC5所多用的一个运算,因为有了乘法运算,可以让在置换操作的时候,置换掉字中的每一位,而不是其中的几位。

算法过程

有了上面的一点点的简介,下面就可以直接来看具体的算法过程了,同样是AES的候选算法,RC6这个算法看起来真的比最终竞选成功的Rijndael算法看起来简单太多了,前文提到了AES最终决赛的入选算法是5个,现在咱们应该是看过两个了,如果心情好的话,可能会去看看其他的三个算法,下次一定,下次一定。

加密过程

【密码学】一文读懂RC6分组加密算法
RC6算法结构
B = B + S[0]
D = D + S[1]
for i = 1 to r do
{
  t = (B*(2B + 1)) <<< lg w
  u = (D*(2D + 1)) <<< lg w
  A = ((A ⊕ t) <<< u) + S[2i]
  C = ((C ⊕ u) <<< t) + S[2i + 1
  (A, B, C, D)  =  (B, C, D, A)
}
A = A + S[2r + 2]
C = C + S[2r + 3]

相比于RC5这里的变动是最大的,读者们可以自行对比一下和RC5的区别,这里就不展开讲了。

解密过程

C = C - S[2r + 3]
A = A - S[2r + 2]

for i = r downto 1 do
{
  (A, B, C, D) = (D, A, B, C)
  u = (D*(2D + 1)) <<< lg w
  t = (B*(2B + 1)) <<< lg w
  C = ((C - S[2i + 1]) >>> t) ⊕ u
  A = ((A - S[2i]) >>> u) ⊕ t
}
D = D - S[1]
B = B - S[0]

密钥扩展算法

对于密钥扩展算法来说,这个和RC5的基本一致,只不过对于最终的长度更对一些。这里贴一张图,就不再详细描述密钥扩展算法了,不熟悉的读者可以去看看RC5的相关资料。

【密码学】一文读懂RC6分组加密算法
RC6密钥生成规则

代码实现

这里我又来偷懒了,参见参考资料当中的代码实现吧。

参考资料

  • https://github.com/hallfox/rc6-rust
  • https://en.wikipedia.org/wiki/RC6
  • https://people.csail.mit.edu/rivest/pubs/RRSY98.pdf


原文始发于微信公众号(Coder小Q):【密码学】一文读懂RC6分组加密算法

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月17日17:55:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  【密码学】一文读懂RC6分组加密算法 http://cn-sec.com/archives/1300719.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: