分组密码SAFER+的C#实现
2009-02-27 08:18:34 来源:WEB开发网一 引言
SAFER+是密码学家James L.Massey、Gurgn H.Khachetrian和Melsik K.Kuregian等人设计
的一种分组密码算法,它采用了结构清晰的替换/置换网络(Substitution-Permutation Network),是SAFER(Secure And Fast Encryption Routine)系列密码的强化版,也是AES首轮15个候选算法之一,SAFER+的最大特点是全部运算都是字节运算,使得它能在计算资源最紧张的IC卡上也能快速运行。SAFER+的运用十分广泛,如在通信领域所采用的蓝牙通信技术中,用于认证的E1函数,所采用的算法即是128位的SAFER+。
SAFER+的明文和密文分组均为128比特,其用户密钥匙可在128比特、192比特和256比特三种中进行选择,相应地,轮函数的迭代轮数分别为8轮、12轮和16轮迭代,SAFER+的运算部件分为三种,第一种是逐比特异或运算⊕和模256加运算“+”来进行群加密;第二种是用一个算法公开的指数盒和它的逆盒,也即对数盒做文章字节内的混淆;最后用一个线性层作为字节之间的快速扩散。
作为一种流行的软件开发工具,VS .NET 在其命名空间system.security.cryptography中提供了众多的加解密类,我们在次命名空间内可以找到熟悉的DES,RIJNDAEL,RC2等对称密码体系算法的运用,但是缺少SAFER+等算法。
在一般的密码学书籍中,SAFER+主要以C语言实现,而缺少以其他语言形式的实现,笔者从多方面对SAFER+进行了尝试。首先,在VS.NET中,以C#实现了256位密钥的SAFER+算法;其次,对算法中涉及到的模“+”,模“-”等均在程序中以模操作清晰的表现出来;并对编程可能出现的误区进行了较深入的剖析;再次,对涉及到的迭代轮数,密钥字节数等可参数均以C#的变量形式给出,避免了将之在程序中进行硬编码。程序界面如下:
更多精彩
赞助商链接