
算法ZUC算法包括祖冲之算法、128-EEA3机密性算法、128-EIA3完整性算法密钥长度为128bit与128bit初始向量共同作用产生32bit的密钥流zuc是序列密码算法zuc算法负责生成密钥流与明文异或获得密文ZUC算法在逻辑上分为上中下三层。上层是16级线性反馈移位寄存器LFSR中层是比特重组BR下层是非线性函数F上层LFSR包括16个31位的寄存器s0~s15初始化模式下接收一个31bit 的 u而u是通过F函数输出的w向右循环一位获得的工作模式下不接收任何参数俩个工作模式目的都是为了更新s0~s15的状态中层 br 比特重组从上层16个寄存器选取8个特定单元抽取128bit形成4乘32位形成X0~X3下层非线性函数F把x0~x2处理后的输出结果W与x3异或获得输出密钥流z密钥装入16个寄存器31位怎么装128bit的密钥分成16份128bit IV 也份为16份也就是每一份有8816bit31-1615bit15bit作为中间的d值查表获得。d0~d15是固定值参数需要输入一个整数L作用是根据明文长度确定获得L个密钥流zsm4算法 我国第一个商用密码算法数据分组长度为128比特密钥为128bit加密算法和密钥扩展算法都是32轮非线性迭代结构是平衡Feistel加解密算法结构一致解密时只需要将加密时的轮密钥逆序排列就可以从密文分组中恢复出明文分组。基本密码部件1 非线性字节变换S盒八位输入八位输出实现非线性置换置换规则输入的高半字节为行号低半字节为列号然后查找s表得到输出2非线性字变换tao混淆作用具体是四个4盒并行置换也就是输入32bit记为A输出32bit字记为B3字线性部件L变换扩散作用希望一个密文会被多个明文影响输入为B输出为C是线性循环移位2,10,18,24会考tao和L合起来就是字合成变换T轮密钥来源见下文密钥扩展算法反序变换把x35赋值给了Y0类推通过加密变换得到密文X0~X35,密钥扩展算法FK0~FK3 都是常数参数CK也是常量32位图里倒数第三行开头是rkiSM2困难基于椭圆曲线上点群离散对数问题基于椭圆曲线密码ECC密钥在192~256常用256密钥对生成生成私钥随机数d公钥计算公钥私钥生成过程中长度私钥为256时公钥为256256512bit密文比明文长多少c1经过倍乘为512c3如果使用SM3为256bitc2长度与明文长度相等所以长512256bitSM9算法是一种标识密码08年申请型号16年发布将用户标识作为公钥。原理基于双线性对的标识密码包含四个算法数字签名算法密钥交换协议密钥封装协议公钥加密算法kgc和用户都各有一个公钥和一个私钥分别是主密钥和用户密钥主私钥和用户私钥都是256bit主公钥是512bit用户公钥为标识数据如手机号