3DES算法原理写成Android/java形式

来源:互联网 发布:网络征婚投资 编辑:程序博客网 时间:2024/05/18 20:10

1. 解释

3DES算法是DES加密算法的一种模式,使用3条64位(56位有效)的秘钥对数据进行三次加密。也就是说,我们可以直接使用上一篇Android/java源代码实现DES算法原理+整理  的方法类的基础上来写3DES算法。

3DES是DES向AES过渡的加密算法。

设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的秘钥,M代表明文,C代表密文,这样:
3DES加密过程为:C=Ek3(Dk2(Ek1(M)))
3DES解密过程为:M=Dk1(EK2(Dk3(C)))

2. 3DES算法原理写成java/Android


/** * 3DES算法 */public void My3DES(){String key1 = "qwertyui";String key2 = "asdfghjk";String key3 = "原始秘钥";String data = "原始数据";data = "x朱y小z姐。";//以下是3DES加密过程this.bytekey = key1.getBytes();byte[] r1 = DesEncrypt(data.getBytes(), 1);//Ek1(M)this.bytekey = key2.getBytes();byte[] r2 = DesEncrypt(r1, 0);//Dk2(Ek1(M))this.bytekey = key3.getBytes();byte[] r3 = DesEncrypt(r2, 1);//Ek3(Dk2(Ek1(M)))//加密完成后,尚有填充位未去掉,可以在解密的时候直接处理,这里暂时不处理。不影响使用以及解密//下面是解密过程this.bytekey = key3.getBytes();byte[] dr1 = DesEncrypt(r3, 0);//Dk3(C)this.bytekey = key2.getBytes();byte[] dr2 = DesEncrypt(dr1, 1);//EK2(Dk3(C))this.bytekey = key1.getBytes();byte[] dr3 = DesEncrypt(dr2, 0);//Dk1(EK2(Dk3(C)))byte[] newDeResult = new byte[data.getBytes().length];System.arraycopy(dr3, 0, newDeResult, 0, newDeResult.length);//巧妙过滤填充位MyUtils.log("解密后密文="+new String(newDeResult));}


3. 运行结果


0 0
原创粉丝点击