3DES加密算法

article/2025/9/16 13:19:09

一、3DES加密

DES是一个经典的对称加密算法,但也缺陷明显,即56位的密钥安全性不足,已被证实可以在短时间内破解。为解决此问题,出现了3DES,也称Triple DES,3DES为DES向AES过渡的加密算法,它使用3条56位的密钥对数据进行三次加密。为了兼容普通的DES,3DES并没有直接使用 加密->加密->加密 的方式,而是采用了加密->解密->加密 的方式。

当三重密钥均相同时,前两步相互抵消,相当于仅实现了一次加密,因此可实现对普通DES加密算法的兼容。

二、3DES解密

3DES解密过程,与加密过程相反,即逆序使用密钥。是以密钥3、密钥2、密钥1的顺序执行 解密->加密->解密。

相比DES,3DES因密钥长度变长,安全性有所提高,但其处理速度不高。因此又出现了AES加密算法,AES较于3DES速度更快、安全性更高。

三、Go语言使用3DES算法

对比DES,发现只是换了NewTripleDESCipher。不过,需要注意的是,密钥长度必须24byte,否则直接返回错误。

package mainimport ("crypto/des""bytes""crypto/cipher""fmt"
)//为最后一组填充数据
func PaddingText(src []byte,blockSize int)[]byte{length := len(src)%blockSize//获取需要填充的字节数padding := blockSize-length//填充数据paddText := bytes.Repeat([]byte{byte(padding)},padding)//将填充数据追加到原始数据newText := append(src,paddText...)return newText
}func UnPaddingText(src []byte) []byte{length := len(src)//取出原始数据最后一个字节number := int(src[length-1])//去除填充数据newText := src[:length-number]return newText
}//使用DES算法对文件进行加密
//src:需要被加密的明文
//key:秘钥
func EncryptDES(src,key []byte)([]byte,error){//生成加密用的blockblock, err := des.NewTripleDESCipher(key)if err!=nil{return []byte(""),err}length := block.BlockSize()//拼接数据src = PaddingText(src,length)//NewCBCEncrypter第二个参数是初始化向量,长度要求和块大小一样,内容随意(需要和解密初始化向量相同)//根据块和向量创建CBC加密模式blockMode := cipher.NewCBCEncrypter(block,key[:block.BlockSize()])//创建切片,用于存储加密之后的密文dest := make([]byte,len(src))//加密blockMode.CryptBlocks(dest,src)return dest,nil
}//使用DES算法解密
//src:需要被解密的密文
//key:秘钥,需要和加密时使用的秘钥相同
func DecryptDES(src,key []byte)([]byte,error){block, err := des.NewTripleDESCipher(key)if err != nil{return []byte(""),err}//准备初始化向量//创建解密模式blockMode := cipher.NewCBCDecrypter(block,key[:block.BlockSize()])//创建切片,用于存储解密之后的明文dest := make([]byte,len(src))//解密blockMode.CryptBlocks(dest,src)NewText := UnPaddingText(dest)return NewText,nil
}func main(){src := []byte("单枪匹马你别怕,一腔孤勇又如何!")key := []byte("12345678")ciphertext,err := EncryptDES(src,key)if err != nil{fmt.Println("Encrypt err:",err)return}fmt.Printf("%x\n",ciphertext)plaintext,err := DecryptDES(ciphertext,key)if err != nil{fmt.Println("Decrypt err:",err)return}fmt.Println(string(plaintext))
}

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

相关文章

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

3des,全称为3DESede或TripleDES,中文解释为是三重数据加密,用户可以通过通过对DES算法进行改进,针对每个数据块进行三次DES加密,下面小编为你带来java实现3des加密解密教程! 首先我们需要自行安装配置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;这个过程将会碰到关于数据的问题。 数据增长带来的烦…

MySQL 归档数据的方法你知道了吗

归档&#xff0c;在 MySQL 中&#xff0c;是一个相对高频的操作。 它通常涉及以下两个动作&#xff1a; 迁移。将数据从业务实例迁移到归档实例。删除。从业务实例中删除已迁移的数据。 在处理类似需求时&#xff0c;都是开发童鞋提单给 DBA&#xff0c;由 DBA 来处理。 于…