DES算法介绍及Java代码实例

要使用des算法,那就要先了解des算法。(以下是des算法介绍,来自百度百科)

DES算法是什么

DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。 明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。

DES基本原理

其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。

                            des算法结构

 

DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,

整个算法的主流程图如下:

                              des算法流程图

 

 

光看这些概念确实让人云里雾里,明明汉字英语都认识,凑到一起就啥也不懂了。

 

我到现在,也只是掌握大概初始置换运算,逆初始置换运算及    S盒置换运算的原理

还是看B站的视频才了解其中一部分加密操作的大概做了什么。

DES加密算法-《信息安全技术》课程微课设计

 

B站UP主:志在千里的老冀

 

那么,我们大概了解了des是对称加密算法,是可以用来加密解密的。

掌握其使用方法,就已经足够了。

 

分享一下我Java项目中的的des代码

首先,在使用DES加密前,需要先定义一个类,叫Base64

 

那么Base64是啥呢,我们看下百度百科。

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

 

ok,知道这个就行了,我们的des算法里待会还要用它。

Base.64class

package com.mb.Util;

import java.io.*;

/**
 * Base64编码和解码
 */
public class Base64 {

    public Base64() {
    }

    /**
     * 编码字符串
     * @param data 需要编码的字符串
     * @return 编码完成的字符串
     */
    public static String encode(String data) {
        return new String(encode(data.getBytes()));
    }

    /**
     * 解码字符串
     * @param data 需要解码的字符串
     * @return  解码完成的字符串
     */
    public static String decode(String data) {
        return new String(decode(data.toCharArray()));
    }

    /**
     * 编码byte[]
     * @param data 输入需要编码的字节组
     * @return 编码完成的char类型数组
     */
    public static char[] encode(byte[] data) {
        char[] out = new char[((data.length + 2) / 3) * 4];
        for (int i = 0, index = 0; i < data.length; i += 3, index += 4) {
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值