密码学系列之:SAFER
密码学系列之:SAFER
简介
分组密码是一个非常优秀的加密结构,很多常用加的加密算法使用的都是分组算法,比如DES。SAFER表示的也是一种分组密码算法。一起来看看吧。
SAFER简介
SAFER的全称是Secure And Fast Encryption Routine,在密码学中,SAFER主要是由James Massey(IDEA的设计师之一)代表Cylink公司设计的一组分组密码。
SAFER主要有四种类型分别是:SAFER K, SAFER SK ,SAFER+ 和SAFER++ 。
其中SAFER K 和 SAFER SK 是比较早期的设计,共享相同的加密函数,但是轮次和密钥调度是不一样的。
后面的SAFER+ 和SAFER++ 是作为AES算法的候选算法提交给NESSIE的。 SAFER系列中的所有算法都没有专利限制,可以免费使用。
SAFER K 和 SAFER SK
第一个SAFER密码是由Massey在1993年发布的SAFER K-64,具有64位块大小。 “K-64”表示64位的密钥大小。
因为64位的块太小了,不适合加密大的数据,所以第二年,Massey发布了支持128位的变体,叫做:SAFER K-128。
但是,Lars Knudsen和Sean Murphy发现这个版本存在一些问题,于是将密钥调度按照Knudsen的建议从新设计。这些变种算法分别被命名为SAFER SK-64和SAFER SK-128。
其中 “SK”代表"Strengthened Key schedule"也就是强化过的时间调度。
除此之外,还有一种40位块大小的变种算法SAFER SK-40。
我们使用一个图来看下SAFER K算法的基本流程:

从最上面开始,是明文的输入阶段,每个明文都被分成8块。
接着就是密钥混合阶段,在这个阶段,明文分别和子密钥进行加法模256或者XOR运算。
然后是替换阶段,将上一阶段生成的结果通过两个相反的S盒映射成为新的数据。
这两个S盒分别是由45x和log45这两个函数派生出来的。有想了解S盒的朋友可以参考 “密码学系列之:blowfish对称密钥分组算法” 一文。
然后是第二次的密钥混合阶段。
在第二次密钥混合阶段之后,会使用pseudo-Hadamard transform (PHT)来进行扩散。
这四个阶段组成了一轮加密。
SAFER+ 和 SAFER++
SAFER+ 和 SAFER++ 是对原有的SAFER加密算法的改进。他们是由亚美尼亚密码学家Gurgen Khachatrian(亚美尼亚大学)和Melsik Kuregian与Massey共同设计的。
SAFER + 是在1998年提出的,但是是以AES的候选算法提交的,它的块大小是128位。蓝牙的密钥是基于SAFER +的自定义算法来实现的(称为E21和E22),
SAFER ++ 是在2000年通过两个版本提交给NESSIE项目的,一个版本是64位,另一个版本是128位。
本文已收录于 http://www.flydean.com/safer/
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
密码学系列之:SAFER的更多相关文章
- 密码学系列之:memory-hard函数
密码学系列之:memory-hard函数 目录 简介 为什么需要MHF Memory hard的评估方法 MHF的种类 MHF的密码学意义 memory-hard在MHF中的应用 简介 Memory ...
- 密码学系列之:碰撞抵御和碰撞攻击collision attack
密码学系列之:碰撞抵御和碰撞攻击collision attack 简介 hash是密码学和平时的程序中经常会用到的一个功能,如果hash算法设计的不好,会产生hash碰撞,甚至产生碰撞攻击. 今天和大 ...
- 密码学系列之:feistel cipher
密码学系列之:feistel cipher 简介 feistel cipher也叫做Luby–Rackoff分组密码,是用来构建分组加密算法的对称结构.它是由德籍密码学家Horst Feistel在I ...
- 密码学系列之:memory-bound函数
密码学系列之:memory-bound函数 目录 简介 内存函数 内存受限函数 内存受限函数的使用 简介 memory-bound函数可以称为内存受限函数,它是指完成给定计算问题的时间主要取决于保存工 ...
- 密码学系列之:Merkle–Damgård结构和长度延展攻击
密码学系列之:Merkle–Damgård结构和长度延展攻击 简介 Merkle–Damgård结构简称为MD结构,主要用在hash算法中抵御碰撞攻击.这个结构是一些优秀的hash算法,比如MD5,S ...
- <密码学系列>—信息安全威胁
懒惰等于将一个人活埋.--泰勒 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues. https://github.com/midou-tech/articles 点关注,不迷路! ...
- 密码学系列之:NIST和SHA算法
目录 简介 SHA1 SHA2 SHA3 简介 SHA算法大家应该都很熟悉了,它是一个用来计算hash的算法,目前的SHA算法有SHA1,SHA2和SHA3种.这三种算法都是由美国NIST制定的. N ...
- 密码学系列之:Argon2加密算法详解
目录 简介 密钥推导函数key derivation function Password Hashing Competition Argon2算法 Argon2的输入参数 处理流程 简介 Argon2 ...
- 密码学系列之:1Password的加密基础PBKDF2
目录 简介 PBKDF2和PBKDF1 PBKDF2的工作流程 详解PBKDF2的key生成流程 HMAC密码碰撞 PBKDF2的缺点 总结 简介 1password是一个非常优秀的密码管理软件,有了 ...
- 密码学系列——常见的加密方式(c#代码实操)
前言 说起加密方式,其实密码学的角度ASCII编码其实本身就是一种加密解密. 由于其公开,现在用于数字与字符的转换. 查看ASCII表可以去官网查查. 转换代码如下: static void Main ...
随机推荐
- 【Azure Function】Function本地调试时遇见跨域问题(blocked by CORS policy)
问题描述 在本地调试Azure Function时,遇见了跨域问题: Access to XMLHttpRequest at 'http://localhost:7071/api/HttpTrigge ...
- go grpc流式和非流式的例子
参考grpc官方: https://grpc.io/docs/quickstart/go.html 或官方中文翻译: http://doc.oschina.net/grpc?t=60133 安装pr ...
- [Python] 超简单的 超星学习通自动签到
目录 概述 代码 其他的 文件编码问题 windows 和 linux下换行符不同的问题 概述 今天两节课的签到都错过了 /(ㄒoㄒ)/~~ 所以决定花点时间做一个自动签到的工具 经过观察发现超星的结 ...
- C语言之牛必克拉斯 main() 函数
C语言之main()函数 C程序最大的特点就是所有的程序都是用函数来装配的.main()称之为主函数,是所有程序运行的入口.其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用的 ...
- [.Net]使用Soa库+Abp搭建微服务项目框架(二):面向服务体系的介绍
上一章我们建立了一个典型的面向领域设计的Abp小项目,如果按照常规的开发方式,会遇到什么问题呢? 先来完善一下这个小项目,在定义好各实体类后,运行Miguration并向数据库里写入一些初始数据. ...
- end_of_line = lf 选择行尾序列 .editorconfig - 老项目不动代码存盘 文件变动 CRLF 的问题 vscode
end_of_line = lf 选择行尾序列 .editorconfig - 老项目不动代码存盘 文件变动 CRLF 的问题 缘由 vscode 老项目代码,没有变动,ctrl + s后 文件有变化 ...
- Django使用Bootstrap的经典方法
前面的话 Bootstrap是简单.灵活的用于搭建WEB页面的HTML.CSS.Javascript的工具集.Bootstrap基于HTML5和CSS3,具有漂亮的设计.友好的学习曲线.卓越的兼容性, ...
- 回顾redis底层数据结构
参考,欢迎点击原文:https://blog.csdn.net/qq_38286618/article/details/102530020 https://www.cnblogs.com/jaycek ...
- 虚拟现实(VR)在医疗保健中的5种应用
医疗保健中的VR虚拟现实 虚拟现实的由来已久,18世纪,法国的医生使用布制的分娩模拟器向助产师和外科医生教授医学技术.在20世纪60年代初,医生一边对心肺复苏学员口述心肺复苏的技巧,一边使用一家塑料玩 ...
- View之Canvas,Paint,Matrix,RectF等介绍
目录介绍 1.Paint画笔介绍 1.1 图形绘制 1.2 文本绘制 2.Canvas画布介绍 2.1 设置属性 2.2 画图[重点] 2.3 Canvas对象的获取方式 2.4 Canvas的作用 ...