当前位置: 首页 > news >正文

【Go】爬虫数据解密_使用Go语言实现TripleDES加密和解密


是你多么温馨的目光
教我坚毅望着前路
叮嘱我跌倒不应放弃
没法解释怎可报尽亲恩
爱意宽大是无限
请准我说声真的爱你
                     🎵 Beyond《真的爱你》


引言

Triple Data Encryption Standard (TripleDES 或 3DES) 是一种对称加密算法,它通过三次应用Data Encryption Standard (DES) 加密算法来提供更高的安全性。本文将介绍如何使用Go语言实现TripleDES加密和解密,包括PKCS5填充和去填充。

什么是TripleDES?

TripleDES是对称密钥加密的一个扩展版,它通过三次应用DES算法来提高安全性。使用三个不同的密钥,3DES在数据块上进行三次加密和解密操作,从而显著提高了安全性。

准备工作

在开始编写代码之前,请确保已安装Go语言环境。可以从 Go语言官方网站 下载并安装。

代码实现

以下是完整的代码实现,包括加密和解密函数,以及PKCS5填充和去填充。

package mainimport ("bytes""crypto/cipher""crypto/des""encoding/hex""fmt""log"
)// PKCS5Padding 对明文进行PKCS5填充
func PKCS5Padding(src []byte, blockSize int) []byte {padding := blockSize - len(src)%blockSizepadText := bytes.Repeat([]byte{byte(padding)}, padding)return append(src, padText...)
}// PKCS5UnPadding 对解密后的明文去除PKCS5填充
func PKCS5UnPadding(origData []byte) []byte {length := len(origData)unpadding := int(origData[length-1])return origData[:(length - unpadding)]
}// Encrypt3DES 3DES加密
func Encrypt3DES(src, key []byte, ivs string) ([]byte, error) {block, err := des.NewTripleDESCipher(key)if err != nil {return nil, err}src = PKCS5Padding(src, block.BlockSize())iv := []byte(ivs)if len(iv) != block.BlockSize() {return nil, fmt.Errorf("IV length must be equal to block size")}blockMode := cipher.NewCBCEncrypter(block, iv)cipherText := make([]byte, len(src))blockMode.CryptBlocks(cipherText, src)return cipherText, nil
}// Decrypt3DES 3DES解密
func Decrypt3DES(src, key []byte, ivs string) ([]byte, error) {block, err := des.NewTripleDESCipher(key)if err != nil {return nil, err}iv := []byte(ivs)if len(iv) != block.BlockSize() {return nil, fmt.Errorf("IV length must be equal to block size")}blockMode := cipher.NewCBCDecrypter(block, iv)blockMode.CryptBlocks(src, src)newText := PKCS5UnPadding(src)return newText, nil
}func main() {key := []byte("0123456789abcdef01234567") // 24字节的密钥iv := "12345678"                          // 8字节的初始向量plaintext := "Hello, 3DES CBC Encryption!"// 加密ciphertext, err := Encrypt3DES([]byte(plaintext), key, iv)if err != nil {log.Fatalf("加密失败: %v", err)}fmt.Printf("加密后的密文: %s\n", hex.EncodeToString(ciphertext))// 解密decryptedText, err := Decrypt3DES(ciphertext, key, iv)if err != nil {log.Fatalf("解密失败: %v", err)}fmt.Printf("解密后的明文: %s\n", decryptedText)
}

代码说明

PKCS5填充和去填充

PKCS5Padding:将数据填充到块大小的倍数。
PKCS5UnPadding:去除填充的数据。

3DES加密

Encrypt3DES:使用3DES加密算法对数据进行加密。包括PKCS5填充,创建3DES密码块,设置CBC模式加密器,并进行加密。

3DES解密

Decrypt3DES:使用3DES解密算法对数据进行解密。包括创建3DES密码块,设置CBC模式解密器,并进行解密,然后去除PKCS5填充。
主函数:

main函数定义了密钥和初始向量(IV),以及要加密的明文。然后调用加密函数和解密函数,并打印结果。

如何运行

将上述代码保存为一个文件,例如main.go。
在终端中运行以下命令:

go run main.go

结论

本文介绍了如何使用Go语言实现TripleDES加密和解密。我们讨论了TripleDES的基本概念,并提供了完整的代码示例。

相关文章:

【Go】爬虫数据解密_使用Go语言实现TripleDES加密和解密

是你多么温馨的目光 教我坚毅望着前路 叮嘱我跌倒不应放弃 没法解释怎可报尽亲恩 爱意宽大是无限 请准我说声真的爱你 🎵 Beyond《真的爱你》 引言 Triple Data Encryption Standard (TripleDES 或 3DES) 是一种对称加密算法,它通…...

【HarmonyOS NEXT】鸿蒙 如何在包含web组件的页面 让默认焦点有效

页面包含web组件Button组件等,把页面的默认焦点放到Button组件上,不起效果。 因为web组件默认会在组件加载完成后获取焦点; 可以在web的网页加载完成时onPageEnd回调中,将设置默认获焦的组件通过focusControl.requestFocus方法主…...

mysql常用参数配置详解my.cnf my.ini

1.关注生产中高频常用参数 # 数据库时区 log_timestamps = system # 刷盘策略 0,1,2 innodb_flush_log_at_trx_commit # 定义了 InnoDB 用于写日志数据的缓冲区大小。当事务发生时,日志首先被写入这个缓冲区,然后再被刷新(flush)到磁盘上的重做日志文件(redo log file…...

GlusterFS企业分布式存储

GlusterFS 分布式文件系统代表-nfs常见分布式存储Gluster存储基础梳理GlusterFS 适合大文件还是小文件存储? 应用场景术语Trusted Storage PoolBrickVolumes Glusterfs整体工作流程-数据访问流程GlusterFS客户端访问流程 GlusterFS常用命令部署 GlusterFS 群集准备环…...

SSH生成SSH密钥(公钥和私钥)

在设置SSH服务时,生成SSH密钥(公钥和私钥)是一个常见的任务。这些密钥用于安全地进行身份验证,无需输入密码。以下是如何生成SSH密钥的步骤: 1. 生成SSH密钥对 首先,您需要在客户端机器上生成一个SSH密钥…...

阶段性总结:如何快速上手一个新的平台或者技术

作为研发一枚,为了实现客户的各种需求,为了避免重复造轮子,通常需要快速调查到哪个轮子(比如各种平台,或者开发包等)好用,然后快速熟悉和上手。在接触到一个新的平台或者技术的时候,…...

kettle从入门到精通 第七十一课 ETL之kettle 再谈http post,轻松掌握body中传递json参数

场景: kettle中http post步骤如何发送http请求且传递body参数? 解决方案: http post步骤中直接设置Request entity field字段即可。 1、手边没有现成的post接口,索性用python搭建一个简单的接口,关键代码如下&#…...

第十二章:会话控制

会话控制 文章目录 会话控制一、介绍二、cookie2.1 cookie 是什么2.2 cookie 的特点2.3 cookie 的运行流程2.4 浏览器操作 cookie2.5 cookie 的代码操作(1)设置 cookie(2)读取 cookie(3)删除 cookie 三、se…...

【LeetCode滑动窗口算法】长度最小的子数组 难度:中等

我们先看一下题目描述&#xff1a; 解法一&#xff1a;暴力枚举 时间复杂度&#xff1a;o(n^3) class Solution { public:int minSubArrayLen(int target, vector<int>& nums){int i 0, j 0;vector<int> v;for (;i < nums.size();i){int sum nums[i];fo…...

MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)

目录 前言1. 授予权限2. 撤销权限3. 查询权限4. Demo 前言 公司内部的数据库权限一般针对不同人员有不同的权限分配&#xff0c;而不都统一给一个root权限 1. 授予权限 授予用户权限的基本命令是GRANT 可以授予的权限种类很多&#xff0c;涵盖从数据库和表级别到列和存储过…...

Day39

Day39 JSP JSP底层 全称为Java Server Pages&#xff0c;JSP实际上就是一个servelet JSP:HTML页面Java代码&#xff0c;本质&#xff1a;servlet。 public class login_jsp{//JSP的9大内置对象private JSPWriter out;//当前JSP输出流对象private HttpServletRequest request;…...

Nginx之HTTP模块详解

Nginx是模块化的代码架构&#xff0c;其代码由核心代码与功能模块代码构成。Nginx的主要功能模块是HTTP功能模块&#xff0c;HTTP功能模块在HTTP核心功能的基础上为Nginx对HTTP请求的处理流程提供了扩展功能&#xff0c;这些扩展功能可以让用户很方便地应对访问控制、数据处理、…...

JCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断

JJCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断 目录 JJCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断分类效果格拉姆矩阵图GAF-PCNNGASF-CNNGADF-CNN 基本介绍程序设计参考资料 分类效果 格拉姆…...

最新Prompt预设词分享,DALL-E3文生图+文档分析

使用指南 直接复制使用 可以前往已经添加好Prompt预设的AI系统测试使用&#xff08;可自定义添加使用&#xff09; 支持GPTs SparkAi SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。支持GPT-4o…...

基于SpringBoot+Vue会所产后护理系统设计和实现

基于SpringBootVue会所产后护理系统设计和实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 &#…...

Linux中的EINTR和EAGAIN错误码

Linux中的EINTR和EAGAIN错误码 在Linux系统中&#xff0c;进行系统调用时经常会遇到各种错误码。其中&#xff0c;EINTR&#xff08;Interrupted system call&#xff09;和EAGAIN&#xff08;Resource temporarily unavailable&#xff09;是两个较为常见的错误码&#xff0c…...

用户需求分析揭秘:最佳实践与策略

大多数产品团队都有自己处理客户需求的一套流程。但是那些潜在的客户和他们的需求呢&#xff1f;如果在产品管理上已经有一定的资历&#xff0c;很可能对此见惯不怪了。 通常&#xff0c;这些需求是销售人员跑来告诉你的&#xff0c;大概就是说&#xff1a;“超棒的潜在客户一…...

批量创建文件夹 就是这么简单 一招创建1000+文件夹

批量创建文件夹 就是这么简单 一招创建1000文件夹 在工作中&#xff0c;或者生活中&#xff0c;我们经常要用到批量创建文件夹&#xff0c;并且根据不同的工作需求&#xff0c;要求是不一样的&#xff0c;比如有些人需要创建上千个不一样名称的文件夹&#xff0c;如果靠手动创…...

LogicFlow 学习笔记——8. LogicFlow 基础 事件 Event

事件 Event 当我们使用鼠标或其他方式与画布交互时&#xff0c;会触发对应的事件。通过监听这些事件&#xff0c;可以获取其在触发时所产生的数据&#xff0c;根据这些数据来实现需要的功能。详细可监听事件见事件API。 监听事件 lf实例上提供on方法支持监听事件。 lf.on(&…...

Nginx缓存之代理缓存配置

Nginx 的缓存功能是集成在代理模块中的&#xff0c;当启用缓存功能时&#xff0c;Nginx 将请求返回的响应数据持久化在服务器磁盘中&#xff0c;响应数据缓存的相关元数据、有效期及缓存内容等信息将被存储在定义的共享内存中。当收到客户端请求时&#xff0c;Nginx 会在共享内…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...