Des算法介绍: http://zh.wikipedia.org/wiki/DES
维基百科中des算法的介绍很详细了.
1轮的 des 采用 56 位有效的密钥(密钥本来是64位,其中第8,16,24,32,40,48,56,64位不影响结果) 对 64 位(8字节) 数据 进行加密, 加密解密算法是统一算法(过程一样,使用密钥次序不同)。
算法过程:
概述:
通过图比较容易 理解
① 算法开始对 输入数据进行初始的位置换 , IBM 已经给出置换表(下面大量置换都是查表置换 )置换之后得到初始数据。
{
置换表:
char table_IP[] /* 初始置换表 IP */
= {
58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4,
62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8,
57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3,
61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7
};
所以现在查表一位一位置换,比如 :
原始数据存在 data1-data64 这 64 位中,置换后数据存在 to1 - to64 中:
则有: to1 = data58, to2 = data50, to42 = data42 ... to64 = data7 .
这样就可以得到新数据。
}//第一步结束