博客
关于我
java加密解密
阅读量:802 次
发布时间:2023-01-28

本文共 3394 字,大约阅读时间需要 11 分钟。

Base64编码与DES加密解密算法

Base64编码是网络上最常见的用于传输8位字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息。其运算原理基于计算机是8位存储的特点,通过将24位字符分解为4组6位的字符进行处理,并为每组高位补0,转换成ascii码后根据RFC2045~RFC2049表进行转换。

Base64编码示例

public class Test {    public static void main(String[] args) throws Exception {        Test test = new Test();        test.testEncrypt();        test.testDecrypt();    }    public void testEncrypt() throws Exception {        String pwd = "123456";        byte[] i = pwd.getBytes();        String input = new BASE64Encoder().encodeBuffer(i);        System.out.println(input);    }    public void testDecrypt() throws Exception {        String pwd = "MTIzNDU2";        byte[] o = new BASE64Decoder().decodeBuffer(pwd);        String output = new String(o);        System.out.println(output);    }}

输出结果

123456的Base64编码为:MTIzNDU2解密后的结果为:123456

DES加密算法

DES(Data Encryption Standard)是一种对称加密算法,加密和解密均使用相同密钥进行处理。

public class DESTest {    public static void main(String[] args) {        DESTest t = new DESTest();        String data = "123456";        String encode_data = t.encode(data);        System.out.println(encode_data);        String decode_data = t.decode(encode_data);        System.out.println(decode_data);    }    public static final String ALGORITHM_DES = "DES";    public static final String SIGN_KEY = "20170313EHR";    public String encode(String data) {        if (data == null) {            return null;        }        try {            String key = SIGN_KEY;            DESKeySpec dks = new DESKeySpec(key.getBytes());            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");            Key secretKey = keyFactory.generateSecret(dks);            Cipher cipher = Cipher.getInstance(ALGORITHM_DES);            cipher.init(Cipher.ENCRYPT_MODE, secretKey);            byte[] bytes = cipher.doFinal(data.getBytes());            return byte2str(bytes);        } catch (Exception e) {            e.printStackTrace();            return data;        }    }    public String decode(String data) {        if (data == null) {            return null;        }        try {            String key = SIGN_KEY;            DESKeySpec dks = new DESKeySpec(key.getBytes());            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");            Key secretKey = keyFactory.generateSecret(dks);            Cipher cipher = Cipher.getInstance(ALGORITHM_DES);            cipher.init(Cipher.DECRYPT_MODE, secretKey);            byte[] bytes = cipher.doFinal(str2byte(data.getBytes()));            return new String(bytes);        } catch (Exception e) {            e.printStackTrace();            return data;        }    }    private static byte[] str2byte(byte[] b) {        if ((b.length % 2) != 0) {            throw new IllegalArgumentException();        }        byte[] b2 = new byte[b.length / 2];        for (int n = 0; n < b.length; n += 2) {            String item = new String(b, n, 2);            b2[n / 2] = (byte) Integer.parseInt(item, 16);        }        return b2;    }    private static String byte2str(byte[] b) {        StringBuilder hs = new StringBuilder();        for (int n = 0; n < b.length; n++) {            String stmp = Integer.toHexString(b[n] & 0xFF);            if (stmp.length() == 1) {                hs.append('0');            }            hs.append(stmp);        }        return hs.toString().toUpperCase();    }}

编码与解密后的结果

  • 编码:1730D210F056D4D8123456
  • 解密:123456

转载地址:http://ejryk.baihongyu.com/

你可能感兴趣的文章
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_实际操作---大数据之Nifi工作笔记0020
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_实际操作_02---大数据之Nifi工作笔记0032
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>
NIFI大数据进阶_使用NIFI表达式语言_来获取自定义属性中的数据_NIFI表达式使用体验---大数据之Nifi工作笔记0024
查看>>
NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
查看>>
NIFI大数据进阶_内嵌ZK模式集群2_实际操作搭建NIFI内嵌模式集群---大数据之Nifi工作笔记0016
查看>>
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_实际操作_03---大数据之Nifi工作笔记0035
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_01---大数据之Nifi工作笔记0033
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_02---大数据之Nifi工作笔记0034
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>