你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:文章管理 / 本期精品文章
GOST密码算法类的实现方法
 

邵葳

摘要  本文提供了一个快速实现GOST密码算法的程序,与传统GOST算法相比有以下特点:1)所有变量都定义为16进制,高效实现算法中的各种运算;2S盒的查找与子密钥的使用都采用查表法;3)提取出单轮的算法,使程序结构更加清晰。

关键词 GOST算法,密码,DES算法

GOST算法是前苏联设计的分组密码算法,是Gosudarstvennyi Standard Government Standard的缩写,它除了泛指任何标准外,其实类似于FIPS。该标准的编号为2814789USSR的政府标准会议授予了该标准。它的设计者打算在有效性和安全性之间达到平衡,与DES算法相比有以下优点:在DES中从密钥产生子密钥的过程比较复杂,而GOST的过程非常简单; DES56位密钥,而GOST256位密钥; DESS盒是6位输入和4位输出,而GOST的是4位输入和4位输出,大小仅为DESS盒的1/4 DES16轮,而GOST32轮。

一、算法框架

       GOST是一个64位分组及256位密钥的分组密码算法,它使用32轮的简单迭代。加密时的输入部分被分成左半部分L和右半部分R,第i轮的子密钥为KiGOST的第i轮为(如图1所示):

Li=Ri-1

Ri=Li-1f(Ri-1,Ki)

 

1  GOST算法单轮框架

函数f的过程是:将右半部分R与第i轮的子密钥进行模232加,该结果分成84位分组,第一个4位分组当成第一个S-盒,第二个分组当成第二个盒,依次类推。S-盒是保密的。8S-盒的输出重组成32位字,然后整个字循环左移11位。最后,该结果与左半部分异或变为新的右半部分,原右半部分变为新的左半部分,将此次操作重复进行32次。

子密钥的产生很简单,256位密钥被划分为8 32位分组:K1K2…K832轮加密中子密钥使用顺序是前24轮按18升序,最后8轮按81的顺序。

 

2本算法的核心程序

1.         定义GOSTGOSTCLASS

class GOSTCLASS

{public:

     //定义一个数据结构用于对明密文的存取

struct WordByte

     {    unsigned int zero:4; unsigned int one:4;  unsigned int two:4; unsigned int three:4;

         unsigned int four:4; unsigned int five:4; unsigned int six:4; unsigned int seven:4;

     };

     union Word

     {    unsigned int word; WordByte byte; };

     struct DWord

     {    Word word0;   Word word1;   };

     void Encode(unsigned int *,unsigned int *);//加密函数

     void Decode(unsigned int *,unsigned int *);//解密函数

     DWord data;//定义用于加解密的数据

     unsigned int SubKey[8];//定义子密钥接口,用于外部初始化

private:

     void OneTurn(DWord *,unsigned int);//定义GOST的轮函数

};

 

  推荐精品文章

·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089