DES加密的一点思考(二)
2009-04-14 00:39
246 查看
首先声明,对于DES的学习就以此篇日志作为一个暂时的告别。毕竟只要通过学习提升了能力和耐性就行了,网上现成的函数库,工具库还是有一大堆的。
知道这段话产生了些什么么?
这是在DES中产生16组密钥的过程的最开始的步骤。
使用的那个表就是置换选择表1(PC-1)
这段代码写得很有意思的。首先得明白UINT的数据的右移运算就是直接的在高位补0,左移就是地位补0。然后每次的(~i)&7其实就是求i对7的补数。
最最有意思的还是在bTemp[7],经过56次循环后,它就存储了56个bit位的信息。每次的关键就是和不同的bBitMask来按位或运算。
这让我想起了在《编程之美》书里提及到的,对于一个int的变量,如何存储2个数据不会太大的变量A B?其实就是定义int x。x的高四位来表示A,第四位来表示B就行了。对A的操作之前,把x右移,然后运算完再回复B。对于B的操作同理。
有点意外的是,没想到刚从书上看到的内容就此应用上了。编程大师的这些风格都一样啊,不同的资料来源,一样的思维火花。这还只是DES里的我抽取出来的一小部分,真的很有意思。我还得加油。
// 置换选择表一 (PC-1) static BYTE bSelSwapTable_1[56] = { 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4 } ; UINT i ; BYTE bByteIndex, bBitIndex, bTemp[7] = {0} ; for ( i = 0; i < 56; i++ ) { bByteIndex = ( bSelSwapTable_1[i] - 1 ) / 8 ; bBitIndex = 7 - ( bSelSwapTable_1[i] - 1 ) % 8 ; if ( this->bKey[bByteIndex] & bBitMask[bBitIndex] ) bTemp[i>>3] |= bBitMask[(~i)&7] ; }
知道这段话产生了些什么么?
这是在DES中产生16组密钥的过程的最开始的步骤。
使用的那个表就是置换选择表1(PC-1)
这段代码写得很有意思的。首先得明白UINT的数据的右移运算就是直接的在高位补0,左移就是地位补0。然后每次的(~i)&7其实就是求i对7的补数。
最最有意思的还是在bTemp[7],经过56次循环后,它就存储了56个bit位的信息。每次的关键就是和不同的bBitMask来按位或运算。
这让我想起了在《编程之美》书里提及到的,对于一个int的变量,如何存储2个数据不会太大的变量A B?其实就是定义int x。x的高四位来表示A,第四位来表示B就行了。对A的操作之前,把x右移,然后运算完再回复B。对于B的操作同理。
有点意外的是,没想到刚从书上看到的内容就此应用上了。编程大师的这些风格都一样啊,不同的资料来源,一样的思维火花。这还只是DES里的我抽取出来的一小部分,真的很有意思。我还得加油。
相关文章推荐
- DES加密的一点思考(一)
- 设计表的时候,对于自增列做逻辑主键使用的一点思考
- 数据库设计---关于建表的时候选择横表和竖表(纵表)的一点思考
- 对百度文库文件上传防重复的一点思考
- [每周一讲]对公司传统业务的一点思考
- 多个窗口收发WINDOW消息阻塞的一点思考
- 关于游戏中的运动模糊的一点思考
- 个性化推荐系统(三)---推荐系统意义一点思考
- 关于洗牌算法的一点思考
- 对约定优于配置的一点思考
- 关于 stack overflow 的一点思考 chkstk
- 关于调用复杂的soa服务治理的一点思考
- 对ViewState的一点思考
- 关于员工离职的一点思考
- 对于IT职场的一点思考
- 关于 && 的一点思考
- 关于好软件的一点思考
- 关于深度思考的一点总结
- 关于HIT的一点思考(1)
- 关于android开发中的一点思考