WEB开发网
开发学院软件开发C语言 分组密码SAFER+的C#实现 阅读

分组密码SAFER+的C#实现

 2009-02-27 08:18:34 来源:WEB开发网   
核心提示: 道理同加密算法,因为这是模256的减法运算,分组密码SAFER+的C#实现(10),所以只能采取在运算的每一步对表达式结果使用三目运算符?:进行判断,保证结果为正值后与0xFF作与(&, ;)操作,否则将差加上256来满足要求,3加密算法中,从而保证其值介于0-255之间,因而不能采用通常

道理同加密算法,因为这是模256的减法运算,所以只能采取在运算的每一步对表达式结果使用三目运算符 ?:进行判断,保证结果为正值后与0xFF作与(&, ;)操作,从而保证其值介于0-255之间,因而不能采用通常意义上的二维数组乘法来进行处理。

同加密算法类似的,在第i轮迭代中,采用32*i+j的运算来定位n_LocExpandBox的下标,用表达式的运算结果与0xFF作与(&)操作。代码如下:

input[0] = (byte)((m_nLogBox[input[0] - n_LocKeyExpandBox[32 * i + 16] + 256] ^ n_LocKeyExpandBox[32 * i]) & 0xFF);

 ......

input[30] = (byte)((m_nLogBox[input[30] - n_LocKeyExpandBox[32 * i + 31] + 256] ^ n_LocKeyExpandBox[32 * i + 15]) & 0xFF);

三 几点说明

1 本程序在Windows server 2003 Standard Edition Service Pack 2,Visual Studio

2008 version 9.0.21022.8 RTM,.NET 3.5,Intel P4 3.06Ghz下 调试通过。

2 对程序中出现的所有模256“+”运算,考虑到只取低16位,所以均采用与(&)0xFF来达到此运算要求,而对于模256“+”运算的逆运算,即模256“-”运算,采用三目运算符?:来进行判断,若“-”运算结果大雨等于零,则结果为其自身,否则将差加上256来满足要求。

3 加密算法中,input[0] = (byte)((input[0] ^ n_LocKeyExpandBox[16 * m_nChipherLen]));

不能对结果采用与(&)0xFF操作。

参考文献

1 胡予濮,张玉清,肖国镇编著 《对称密码学》 [M](北京)机械工业出版社2002 年08月

2 http://www.princeton.edu/~rblee/safer+/

上一页  5 6 7 8 9 10 

Tags:分组 密码 SAFER

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接