codecamp

密码学 代换-置换网络

代换-置换网络是一系列被应用于分组密码中相关的数学运算,高级加密标准(英语:AES)、3-Way、Kuznyechik、PRESENT、SAFER、SHARK、Square都有涉用。这种加密网络使用明文块和密钥块作为输入,并通过交错的若干“轮”(或“层”)代换操作和置换操作产生密文块。代换(Substitution)和置换(Permutation)分别被称作S盒(替换盒,英语:S-boxes)和P盒(排列盒,英语:P-boxes)。由于其实施于硬件的高效性,SPN的应用十分广泛。

定义

一个代换-置换网络包括两个长度分别为l, m的映射变换,变换结果为lm分组长度的明文到相同分组长度的密文空间。为对分组进行加密,需要一个同样长度为lm的密钥。 而该密钥每一轮加密中均不相同,由初始密钥K按照一定原则产生。加密主要包括三个部分:代换,置换和轮密钥混合(通常为异或(英语:XOR)操作)。

密钥的生成规则称为密钥编排算法。

设要加密的明文为X,则:

加密解密处理

算法

变种

被选作高级加密标准的Rijndael使用的就是8比特映射到8比特的S盒,密钥长度最小为128比特,最小轮数为10,分组长度同样为128比特。该大小的S盒和密钥长度保证了安全性。常用的变种包括使用不止一个S盒,或者在每一轮中增加或替换一个可逆的线性变换,这可在高级加密标准中看到。

密码学 密码乘积体制
密码学 线性密码分析思想,堆积引理,差分密码分析思想
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

第六章 公钥密码学和离散对数

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }