DES算法Java实现源代码

上传人:博****1 文档编号:498843017 上传时间:2022-07-25 格式:DOC 页数:20 大小:84KB
返回 下载 相关 举报
DES算法Java实现源代码_第1页
第1页 / 共20页
DES算法Java实现源代码_第2页
第2页 / 共20页
DES算法Java实现源代码_第3页
第3页 / 共20页
DES算法Java实现源代码_第4页
第4页 / 共20页
DES算法Java实现源代码_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《DES算法Java实现源代码》由会员分享,可在线阅读,更多相关《DES算法Java实现源代码(20页珍藏版)》请在金锄头文库上搜索。

1、package des;/*加密过程:* 1初始置换IP :将明文顺序打乱重新排列,置换输出为64位。* 2将置换输出的64位明文分成左右凉拌,左一半为L0,右一半称为 R0,各32位。* 3。计算函数的16轮迭代。* a)第一轮加密迭代:左半边输入L0,右半边输入 R0 :由轮函数f实现子密钥K1对R0的加密,* 结果为32位数据组f(R0,K1),* b)第二轮加密迭代:左半边输入L仁R0,右半边输入R仁LO f(R0,K1),由轮函数f实现子密钥* K2对R1的加密,结果为 32位数据组f(R1 , K2) , f(R1,K2)与L1模2相加,得到 一个32为数据组 L1 f(R1,K2

2、).* c)第3到16轮迭代分别用密钥 K3 , K4K16进行。4.再经过逆初始置换IP-1 ,将 数据打乱重排,生成 64位密文。*子密钥生成过程:* 1.将64位的密钥经过 PC-1置换生成56位密钥。* 2.将56位的密钥分成左右两部分,分别进行移位操作(一共进行16轮),产生16个56位长度的子密钥。* 3.将16个56位的子密钥分别进行PC-2置换生成16个48位的子密钥。*轮函数f的工作过程:* 1.在第i次加密迭代过程中,扩展置换E对32位的Ri-1的各位通过置换表置换为48位的输出。* 2.将该48位的输出与子密钥 Ki进行异或操作,运算结果经过S盒代换运算,得到一个 32位

3、比特的输出。* 3。该32位比特输出再经过 P置换表进行P运算,将其各位打乱重排,生成32位的输出。* author Ouya ng*/public class Des in t byteKey;public Des(int byteKey) this.byteKey = byteKey;private static final int IP = 58, 50, 42, 34, 26, 18, 10, 2, 60, 52,40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1,59, 51,43, 35,27, 19, 11,3, 61,53, 45,

4、37, 29, 21, 13, 5, 63, 55, 47, 39, 31,23, 15, 7 ; / 64private static final int IP_1 = 40, 8, 48, 16, 56, 24, 64, 32, 39, 7,47, 15,55,23, 63, 31,38, 6, 46, 14,54,22,62,30, 37, 5, 45,13, 53,21,61,29, 36, 4, 44, 12, 52,20,60,28,35, 3, 43, 11,51, 19,59,27, 34, 2, 42, 10, 50, 18,58,26,33,1,41, 9, 49,17,

5、57, 25 ; / 64private static final int PC_1 = 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 ; / 56private static final int PC_2 = 14, 17, 11

6、,24, 1,5, 3, 28, 15, 6, 21,10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41,52, 31,37, 47,55, 30, 40, 51,45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36,29, 32 ; / 48private static final in t E = 32, 1,2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9,10, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16, 17, 18, 19, 20

7、, 21,20,21,22, 23, 24, 25, 24, 25, 26, 27, 28, 29, 28, 29, 30, 31,32, 1 ; / 48private static final in t P = 16, 7, 20, 21,29, 12, 28, 17, 1, 15, 23,11,4, 25 ; / 32private static final in t S_Box = / S-盒/ S_Box1 14, 4, 13, 1,2, 15, 11,8, 3, 10, 6, 12, 5, 9, 0, 7 , 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12

8、, 11,9, 5, 3, 8 , 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0 , 15, 12, 8, 2, 4, 9, 1,7, 5, 11,3, 14, 10, 0, 6, 13 , / S_Box2 15, 1,8, 14, 6, 11,3, 4, 9, 7, 2, 13, 12, 0, 5, 10 , 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11,5 , 0, 14, 7, 11, 10, 4, 13, 1,5, 8, 12, 6, 9, 3, 2, 15 , 13,

9、8, 10, 1,3, 15, 4, 2, 11,6, 7, 12, 0, 5, 14, 9 , / S_Box3 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11,4, 2, 8 , 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1 , 13, 6, 4, 9, 8, 15, 3, 0, 11, 1,2, 12, 5, 10, 14, 7 , 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11,5, 2, 12 , / S_Box4 7, 13, 14, 3, 0,

10、 6, 9, 10, 1,2, 8,5, 11, 12, 4, 15 , 13, 8, 11,5, 6,15, 0,3, 4, 7,2, 12, 1, 10,14,9 , 10, 6, 9, 0, 12,11,7,13, 15,1, 3, 14, 5, 2, 8,4 , / S_Box5 2, 12, 4, 1,7, 10, 11,6, 8, 5, 3, 15, 13, 0, 14, 9 , 14, 11,2, 12, 4, 7, 13, 1,5, 0, 15, 10, 3, 9, 8, 6 , 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0,

11、 14 , 11,8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3 , / S_Box6 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11 , 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11,3, 8 , 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11,6 , 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1,7, 6, 0, 8, 13 , / S_Box7 4, 11

12、,2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 , 13, 0, 11,7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6 , 1,4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2 , 6, 11, 13, 8, 1,4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12 , / S_Box8 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7 , 1, 15, 13, 8, 10, 3, 7, 4

13、, 12, 5, 6, 11, 0, 14, 9, 2 , 7, 11,4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8 , 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11 ;private static final in t LeftMove = 1, 1,2, 2, 2, 2, 2, 2, 1,2, 2, 2,2, 2, 2, 1 ;*对64位明文进行IP置换处理,* param data需要经过初始IP置换的明文* return 64位经过置换处理的明文*/public int lpRep

14、lace(int data)in t ipMi ngWen = new in t64;for (int i = 0; i ipMingWen.length; i+) ipMi ngWen i = dataIPi-1;return ipMi ngWe n;public static int Strin gToBits(Stri ng data)byte test =data.getBytes();in t In tVa =:new in t64;int In tDa =new in t8;for (int i = 0; i 8; i+) In tDai = testi;if (In tDai 0) In tDai += 256;IntDai %= 256;for (int i = 0; i 8; i+) for (int j = 0; j 8; j+) In tVa(i * 8) + 7) - j = In tDai % 2;In tDai = In tDai / 2;return In tVa;输出经过左移后的数组28位,然后根据左移表*功能:对给定的数组按照offset指定的位数进行循环左移,*作用:将经过pc-1置换处理后的56位密钥先分成左右各 要求对密

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号