对称密码之3DES

article/2025/9/16 16:37:31

       至于 3DES 为什么会出现呢?其实,这个不难想到。由于 DES 是一种非常简便的加密算法,但是密钥长度比较短,计算量比较小,相对来说,比较容易被破解。因此,在 DES 的基础上,使用三重数据加密算法,对数据进行加密,这样来说,破解的概率就小了很多。

1、3DES的概念

      1.1 3DES 

            将密钥长度增至112位或168位,通过增加迭代次数提高安全性。

            3DES,也就是“Triple DES”,中文名“三重数据加密算法”,它相当于是对每个数据块应用三次 DES 加密算法。由于计算机运算能力的增强,原版 DES 密码的密钥长度变得容易被暴力破解;3DES 即是设计用来提供一种相对简单的方法,即通过增加 DES 的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法

      1.2 缺点

           处理速度较慢、密钥计算时间较长、加密效率不高。

      1.3 3DES的实现原理   

使用 3 条 56 位的密钥对数据进行三次加密。3DES(即 Triple DES)是 DES 向 AES 过渡的加密算法(1999年,NIST 将 3-DES 指定为过渡的加密标准)。
其具体实现如下:设 Ek() 和 Dk() 代表 DES 算法的加密和解密过程,K 代表 DES 算法使用的密钥,P 代表明文,C 代表密文,这样:
3DES 加密过程为C = Ek3 ( Dk2 ( Ek1 ( P ) ) )
3DES 解密过程为P = Dk1 ( EK2 ( Dk3 ( C ) ) )

      1.4 JDK实现

           

2、3DES的编码步骤

     2.1  生成密钥

         

     2.1  加/解密

       

3、3DES算法的实现

TripleDESUtil.java

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;public class TripleDESUtil {/*** 生成密钥* * @return*/public static byte[] initKey() {try {// 秘钥生成器KeyGenerator keyGen = KeyGenerator.getInstance("DESede");// 初始化秘钥生成器keyGen.init(168); // 112 168// 生成密钥SecretKey secretKey = keyGen.generateKey();return secretKey.getEncoded();} catch (Exception e) {throw new RuntimeException(e);}}/*** 使用DES算法,对数据进行加密* * @param data*            要加密的数据* @param key*            加密数据的秘钥* @return*/public static byte[] encrypt(byte[] data, byte[] key) {try {// 恢复密钥SecretKey secretKey = new SecretKeySpec(key, "DESede");// cipher完成加密或者解密Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");// 根基密钥,对Cipher进行初始化ENCRYPT_MODE(加密),DECRYPT_MODE(解密)cipher.init(Cipher.ENCRYPT_MODE, secretKey);// 解密/加密byte[] cipherBytes = cipher.doFinal(data);return cipherBytes;} catch (Exception e) {throw new RuntimeException(e);}}/*** 使用DES数据解密* * @param data*            要解密的数据* @param key*            解密数据用到的秘钥* @return*/public static byte[] decrypt(byte[] data, byte[] key) {try {// 恢复密钥SecretKey secretKey = new SecretKeySpec(key, "DESede");// cipher完成加密或者解密Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");// 根基密钥,对Cipher进行初始化ENCRYPT_MODE(加密),DECRYPT_MODE(解密)cipher.init(Cipher.DECRYPT_MODE, secretKey);// 解密/加密byte[] plainBytes = cipher.doFinal(data);return plainBytes;} catch (Exception e) {throw new RuntimeException(e);}}
}
字节数组换位
public class BytesToHex {public static String fromBytesToHex(byte[] resultBytes) {StringBuilder builder = new StringBuilder();for (int i = 0; i < resultBytes.length; i++) {if (Integer.toHexString(0xFF & resultBytes[i]).length() == 1) {builder.append("0").append(Integer.toHexString(0xFF & resultBytes[i]));} else {builder.append(Integer.toHexString(0xFF & resultBytes[i]));}}return builder.toString();}}

测试代码

public class Test {// 待加密的明文public static final String DATA = "test";public static void main(String[] args) {long start = System.currentTimeMillis();/* Test 3DES */byte[] tridesKey = TripleDESUtil.initKey();System.out.println("3DES KEY : " + BytesToHex.fromBytesToHex(tridesKey));byte[] tridesResult = TripleDESUtil.encrypt(DATA.getBytes(), tridesKey);System.out.println(DATA + ">>>3DES 加密>>>"+ BytesToHex.fromBytesToHex(tridesResult));byte[] tridesPlain = TripleDESUtil.decrypt(tridesResult, tridesKey);System.out.println(DATA + ">>>3DES 解密>>>" + new String(tridesPlain));System.out.println(System.currentTimeMillis() - start);}
}


http://chatgpt.dhexx.cn/article/dUg86dq3.shtml

相关文章

3DES加密算法

一、3DES加密 DES是一个经典的对称加密算法&#xff0c;但也缺陷明显&#xff0c;即56位的密钥安全性不足&#xff0c;已被证实可以在短时间内破解。为解决此问题&#xff0c;出现了3DES&#xff0c;也称Triple DES&#xff0c;3DES为DES向AES过渡的加密算法&#xff0c;它使用…

java 3des_如何用Java进行3DES加密解密 java实现3des加密解密教程

3des&#xff0c;全称为3DESede或TripleDES&#xff0c;中文解释为是三重数据加密&#xff0c;用户可以通过通过对DES算法进行改进&#xff0c;针对每个数据块进行三次DES加密&#xff0c;下面小编为你带来java实现3des加密解密教程&#xff01; 首先我们需要自行安装配置java环…

C# 3DES 加密

public class DESHelper{#region 3des加密/// <summary>/// 3des ecb模式加密/// </summary>/// <param name"aStrString">待加密的字符串</param>/// <param name"aStrKey">密钥</param>/// <param name"iv&…

3DES加密

最近需要对外对接部分接口&#xff0c;用到了3DES加密&#xff0c;便顺手整理一下逻辑和python实现。 DES 对称加密算法。DES算法的入口参数有三个&#xff1a;Key、Data、Mode。其中Key为7个字节共56位&#xff0c;是DES算法的工作密钥&#xff1b;Data为8个字节64位&#xff…

DES对称加密及三重DES(3DES)

一、DES 1 概述 DES算法全称为Data Encryption Standard&#xff0c;即数据加密算法&#xff0c;它是IBM公司于1975年研究成功并公开发表的。DES算法的入口参数有三个&#xff1a;Key、Data、Mode。其中Key为8个字节共64位&#xff0c;是DES算法的工作密钥&#xff1b;Data也为…

3DES加密算法原理及实现

目录 引语 加密 加密算法公式 为什么采用加密-解密-加密的形式 解密 代码实现 注意&#xff1a;3DES是3重DES加解密算法&#xff0c;具体原理同DES,不在赘述。 引语 DES算法是全网公开的&#xff0c;其安全性是依靠秘钥的&#xff0c;但是随着计算机算力的增长&#xff…

3DES加密算法原理

一、3DES加密算法简析&#xff1a; 3DES&#xff0c;也称为 3DESede 或 TripleDES&#xff0c;是三重数据加密算法&#xff0c;相当于是对每个数据库应用三次DES的对称加密算法。 由于DES密码长度容易被暴力破解&#xff0c;所以3DES算法通过对DES算法进行改进&#xff0c;增…

简述3DES加密算法

之前我们聊了DES加密算法&#xff0c;在文章的最后我们提到了人们为了克服DES加密算法的不足&#xff0c;提出了三重DES&#xff0c;也就是3DES&#xff0c;今天我们就来简单了解一下它。 什么是3DES&#xff1f; 3DES&#xff0c;也称为3DESede或TripleDES&#xff0c;是三重数…

图解DES、3DES和AES加密算法

文章目录 一、DES1. 加密和解密2. DES的结构(Feistel网络) 二、3DES1. 3DES加密2. 3DES解密 三、AES1. AES最终候选算法和算法确定2. Rijndael2.1 什么是Rijndael2.2 Rijndael的加密和解密 3. AES密钥生成4. AES算法流程图 一、DES 1. 加密和解密 DES是一种将64bit的明文加密…

ArcGIS版本高级应用 数据归档(历史归档 存档数据)

QQ交流群&#xff1a;607330463 GIS开发技术最强交流群 未经允许 禁止转载 可以参考 目录 1地理数据库 (Geodatabase) 存档 2启用存档 3存档过程 4使用历史版本 5使用历史标记 6使用地理数据库历史查看器 7直接使用存档类 8架构更改和存档 9禁用存档 10存档情景…

文件归档功能

在帮助大家运维EDI平台的这几年中&#xff0c;常常有些客户反馈为什么之前发送的数据页面上都没有了呢&#xff1f;我想查询下之前的数据是否有成功发送给我们的客户应该怎么确认呢&#xff1f;业务数据量太大&#xff0c;文件占用磁盘空间太多&#xff0c;我如何快速地确认一些…

如何创建归档?

首先这里我们先了解两个概念归档和压缩&#xff0c;归档就相当于将文件批量打包在一块&#xff0c;便于之后工作查找文件的位置&#xff0c;但是总体文件的大小是不变的&#xff0c;例如我们将10个不通路径下且每个大小都是10M的文件打包在一块&#xff0c;那么归档后的大小就是…

大数据归档-冷热数据分离

1. 什么是TokuDB&#xff1f; TokuDB 是一个支持事务的“新”引擎&#xff0c;有着出色的数据压缩功能&#xff0c;由美国 TokuTek 公司&#xff08;现在已经被 Percona 公司收购&#xff09;研发。拥有出色的数据压缩功能&#xff0c;如果您的数据写多读少&#xff0c;而且数…

数据归档,存储的完美储备军

数据爆炸性增长的同时&#xff0c;存储成为了大家首要担心的问题 大家都希望自家数据保存20年、50年后仍完好无损 但是&#xff0c;N年后的数据量已达到一个无法预测的峰值 如此大量的数据在保存时极可能存在丢失、损坏等问题 这时需要提前对数据进行“备份”、“归档” 备份是…

oracle数据库归档模式修改ARCHIVELOG

oracle数据库归档模式修改ARCHIVELOG 一、查看当前数据库的归档模式 第一步&#xff1a;查看oracle数据库的归档模式 命令如下&#xff1a;&#xff08;该命令登录sys用户可查&#xff09; select log_mode from v d a t a b a s e ; 如 果 值 为 N O A R C H I V E L O G &am…

数据归档神器-pt-archiver

前言介绍 pt-archiver是用来归档表的工具&#xff0c;可以做到低影响、高性能的归档工具&#xff0c;从表中删除旧数据&#xff0c;而不会对 OLTP 查询产生太大影响。可以将数据插入到另一个表中&#xff0c;该表不需要在同一台服务器上。可以将其写入适合 LOAD DATA INFILE 的…

从MYSQL 数据库归档 到 归档设计

到数据归档&#xff0c;很多人的第一个概念就是&#xff0c;不就是无用的数据&#xff0c;换个地方放吗&#xff0c;直接拷贝&#xff0c;删除不就得了&#xff0c;有那么麻烦。 我见到过的&#xff0c;听到过的数据库归档的方法有以下几种 1 数据通过人工的手段来进行清理&am…

数据存储领域的“归档Archive”

档案圈的朋友想必对档案领域的“归档”一词已经耳熟能详&#xff0c;按照DA/T 58-2014《电子档案管理基本术语》中的定义&#xff0c;归档&#xff08;Archiving&#xff09;是指“按照国家规定将具有保存价值的电子文件及其元数据的保管权交给档案部门的过程”。 今天我们要聊…

那些年跟领导聊过的数据归档【DB篇】:从梳理到落地-DB单表千万级归档详细流程讲解

文章目录 知人论世执笔蓝图V1 - 浅尝辄止V2 - 初窥门镜V3 - 木已成舟 躬行方案安内攘外 卓有成效沉淀之石道阻且长 知人论世 无论何种需求的出现都是因为某种迫切解决的问题契机&#xff0c;它是业务发展中定数也是劫数&#xff0c;近期DBA反馈磁盘存储空间超过80%不足以支撑未…

进来偷学一招,数据归档二三事儿

Hello&#xff0c;大家好&#xff0c;我是楼下小黑哥~ 随着业务的快速增长&#xff0c;业务体量变得越来越大&#xff0c;这个过程我们会碰到各种问题&#xff0c;倒逼着我们进行技术升级。 那今天我们来聊下&#xff0c;这个过程将会碰到关于数据的问题。 数据增长带来的烦…