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

浅谈常见的加密算法及实现

浅谈常见的加密算法及实现

简介:

        随着公司业务的发展,系统用户量日益增多,系统安全性问题一直在脑子里反复回旋,以前系统用户少影响面小,安全方面也一直没有进行思考和加固,现如今业务发展了,虽说目前系统还足够的稳定,但是也急切的需要对整个系统的数据和接口等安全性做一次全面的考察了。在考察之后我们发现系统对外暴漏的接口,以及客户现场部署的系统安全方面都是比较欠缺的,于是根据筛查的情况我们制定了一系列的安全加固方案,于此同时对加密算法也进行了一次系统的梳理和学习,在这里我将把学习的情况分享给大家。

一、详细分析

通常加密分为如下三种:

  1. 对称加密(symmetric),例如:AES、DES等
  2. 非对称加密(asymmetric),例如:RSA、DSA等
  3. 摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等

(1)对此加密指的是采用单钥密码系统的加密方法,同一个可以密钥同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密

算法特征

1、加密方和解密方使用同一个密钥;

2、加密解密的速度比较快,适合数据比较长时的使用;

3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;

(2)非对称加密指的是由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法。

算法特征

1、由于公钥是公开的,而私钥则由用户自己保存,所以对于非对称密钥,其保密管理相对比较简单;

2、因为复杂的加密算法,使得非对称密钥加密速度慢,成本高;

3、非对称加密相比对称加密更安全、可靠。

(3)摘要加密是一种不需要密钥的加密算法,明文进行加密之后生成唯一的密文并且无法破解,有不可逆性、唯一性。

算法特征

1、任何数据加密,得到的密文长度固定。

2、密文是无法解密的(不可逆)

二、实现实例

1、对称加密(symmetric)

对称加密的典型代表是AES,如下是我实现的AES加密的代码:

 AES加密有几个重要的概念:密钥,初始向量IV,加密模式。在编写的过程中需要定义这几个常量

 这几个常量需要和加解密双方约定一致,其中需要注意的是加密模式有五种加密模式(CBC、ECB、CTR、OCF、CFB),这个大家可以去了解一下,这里不做过度阐释。

2、非对称加密(asymmetric)

非对称加密的代表是RSA,具体实现如下:

 而实现RSA首先要生成密钥对,通过密钥对生成公钥和私钥,公钥用于加密,私钥用于解密。

3、摘要加密(digest)

摘要加密的代表是MD5,这个大家应该是接触的比较多,我们通常系统登录认证采用jwt+token的方案的时候,token都是使用MD5的方式加密的。如下是MD5加密的实现代码:

 MD5算法的实现原理:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

        以上都是基于JDK的实现,实现起来会比较繁琐,而且容易出bug,这里推荐一款小而全的Java工具类库Hutool,huttool类库的hutool-crypto模块针对这三种加密类型分别封装,并提供常用的大部分加密算法,具体提供了如下所示的工具类:

总结

本文主要梳理了一下常见算法,并且给出了常见算法的实现实例代码,同时推荐了一款小而全的Java工具类库Hutool,huttool类库的hutool-crypto模块针对这三种加密类型分别封装,并提供常用的大部分加密算法大家有兴趣可以去了解一下。

另外如需本文源码可以留言,代码贴图是为了保证格式方便阅读。祝大家端午节安康!

相关文章:

浅谈常见的加密算法及实现

浅谈常见的加密算法及实现 简介: 随着公司业务的发展,系统用户量日益增多,系统安全性问题一直在脑子里反复回旋,以前系统用户少影响面小,安全方面也一直没有进行思考和加固,现如今业务发展了,虽…...

FTP协议详解

简介 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协…...

网络安全|渗透测试入门学习,从零基础入门到精通—渗透中的开发语言

目录 前面的话 开发语言 1、html 解析 2、JavaScript 用法 3、JAVA 特性 4、PHP 作用 PHP 能做什么? 5、C/C 使用 如何学习 前面的话 关于在渗透中需要学习的语言第一点个人认为就是可以打一下HTML,JS那些基础知识,磨刀不误砍柴…...

八大排序算法之归并排序(递归实现+非递归实现)

目录 一.归并排序的基本思想 归并排序算法思想(排升序为例) 二.两个有序子序列(同一个数组中)的归并(排升序) 两个有序序列归并操作代码: 三.归并排序的递归实现 递归归并排序的实现:(后序遍历递归) 递归函数抽象分析: 四.非递归归并排序的实现 1.非递归归并排序算法…...

基于SpringBoot+Html的前后端分离的学习平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 在知识大爆炸的现代,怎…...

MySQL实战解析底层---“order by“是怎么工作的

目录 前言 全字段排序 rowid排序 全字段排序 VS rowid排序 前言 在开发应用的时候,一定会经常碰到需要根据指定的字段排序来显示结果的需求以举例市民表为例,假设你要查询城市是“杭州”的所有人名字,并且按照姓名排序返回前1000个人的姓…...

Linux和Shell:开源力量与命令行之美

目录 一、概述二、Linux的简单介绍三、Shell的简单介绍四、Linux和Shell的应用领域五、Shell编程结语: 一、概述 Linux和Shell是开源世界中不可或缺的两个重要组成部分。Linux作为一种自由和开放的操作系统,以其稳定性、安全性和可定制性而备受推崇。而S…...

服务负载均衡Ribbon

服务负载均衡Ribbon Ribbon 介绍Ribbon 案例Ribbon 负载均衡策略Ribbon 负载均衡算法设置自定义负载均衡算法 Ribbon 介绍 Ribbon 是一个的客服端负载均衡工具,它是基于 Netflix Ribbon 实现的。它不像 Spring Cloud 服务注册中心、配置中心、API 网关那样独立部署…...

hibernate vilidator主要使用注解的方式对bean进行校验

hibernate vilidator主要使用注解的方式对bean进行校验,初步的例子如下所示: package com.learn.validate.domain; import javax.validation.constraints.Min; import org.hibernate.validator.constraints.NotBlank; public class Student { //在需要校…...

华为HCIP第一天---------RSTP

一、介绍 1、以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路,但是这也带来了网络环路的问题。网络环路会引发广播风暴和MAC地址表震荡等问题,导致用户通信质量差,甚至通信中断。为了解决交换网…...

Jmeter(二) - 从入门到精通 - 创建测试计划(Test Plan)(详解教程)

1.简介 上一篇文章已经教你把JMeter的测试环境搭建起来了,那么这一篇我们就将JMeter启动起来,一睹其芳容,首先我给大家介绍一下如何来创建一个测试计划(Test Plan)。 2.创建一个测试计划(Test Plan&#x…...

Autosar诊断实战系列06-详解Dem中Event的NvM存储

本文框架 前言1. Dem触发NvM存储的基本流程2. Dem触发NvM存储的layout格式及内容2.1 Event在NvM中的layout格式2.2 Event在NvM中的存储内容2.3 Dem中Event与DTC的存储关系3.组合式Event(多个Event对应一个DTC)的存储处理3.1 仅分配一个Memory Entry3.2 检索方式3.3 一对一方式前…...

04 todoList案例

React全家桶 一、案例- TODO List 综合案例 功能描述 动态显示初始列表添加一个 todo删除一个 todo反选一个 todotodo 的全部数量和完成数量全选/全不选 todo删除完成的 todo 1.1 静态组件构建 将资料包中的todos_page/index.html中核心代码添加到Todo.jsx文件中,…...

海睿思分享 | 浅谈企业数据质量问题

一、数据质量问题场景 在日常工作中,业务领导经常通过BI系统来了解各项业务的业绩情况。倘若某天,他打开某张核心报表,发现当日某个区域的数据一直是空白的。BI开发人员经过几个小时的排查分析,发现是当日该区域的销售数据存在产…...

神经网络:激活函数

在计算机视觉中,激活函数是神经网络中的一种非线性函数,用于引入非线性变换和非线性特性到网络中。激活函数的作用、原理和意义如下: 1. 引入非线性变换: 神经网络的线性组合层(如卷积层和全连接层)只能表…...

图像色彩增强相关论文阅读-Representative Color Transform for Image Enhancement(ICCV2021)

文章目录 Representative Color Transform for Image EnhancementAbstractIntroductionRelated workMethod实验Conclusion Representative Color Transform for Image Enhancement 作者:Hanul Kim1, Su-Min Choi2, Chang-Su Kim3, Yeong Jun Koh 单位:S…...

Elasticsearch介绍与应用

Elasticsearch介绍与应用 Elasticsearch的官方文档。 Elasticsearch官网参考文档:https://www.elastic.co/guide/index.html Elasticsearch官方下载地址:https://www.elastic.co/cn/downloads/elasticsearch mvnrepository依赖库地址:http…...

JavaEE规范

Servlet:用于开发 Web 应用程序的 API,定义了处理 HTTP 请求和响应的方式。JSP(JavaServer Pages):一种在服务器端生成动态网页的技术,允许将 Java 代码嵌入到 HTML 页面中。(注意JSP本质就是一个Servlet)J…...

嵌入式实时操作系统的设计与开发New(八)

创建线程 用户在基于RTOS开发应用程序前,首先要创建线程。 用户创建一个线程时须指定用户希望采用的调度策略。 例如,用户想创建一个周期性执行的线程: acoral_period_policy_data_t* data; data acoral_malloc(sizeof(acoral_period_poli…...

MySQL事务相关笔记

杂项 InnoDB最大特点:支持事务和行锁; MyISAM不支持事务 介绍 一个事务是由一条或者多条对数据库操作的SQL语句所组成的一个不可分割的单元,只有当事务中的所有操作都正常执行完了,整个事务才会被提交给数据库。事务有如下特性…...

Nuki:多芯片组合,覆盖全场景需求

当下“以家庭为中心”的生活趋势,推动了智能家居需求激增,智能门禁作为家庭安全与便捷的核心,却因传统门锁适配性差、智能锁安装繁琐等问题发展受限,设备制造商亟需能简化无线开发、提升能效且满足安全认证的解决方案,…...

DS1881对数型数字电位器I²C驱动详解

1. DS1881 数字电位器驱动深度解析:面向嵌入式系统的IC对数型精密控制方案1.1 器件本质与工程定位DS1881 是 Dallas Semiconductor(后被 Maxim Integrated 收购)推出的单通道 IC 接口对数型数字电位器,其核心价值不在于“可编程电…...

Java多线程实战:ReentrantLock与信号量Semaphore的5个高频使用场景解析

Java多线程实战:ReentrantLock与信号量Semaphore的5个高频使用场景解析 在Java并发编程领域,ReentrantLock和Semaphore是两个至关重要的同步工具。它们虽然都属于JUC(java.util.concurrent)包中的并发控制机制,但设计理…...

如何解决Tokio项目中Windows平台TCP性能问题的完整指南

如何解决Tokio项目中Windows平台TCP性能问题的完整指南 【免费下载链接】tokio A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ... 项目地址: https://gitcode.com/GitHub_Trending/to/tokio To…...

掌握Pwndbg调试器:从入门到精通的界面定制与配置指南

掌握Pwndbg调试器:从入门到精通的界面定制与配置指南 【免费下载链接】pwndbg Exploit Development and Reverse Engineering with GDB & LLDB Made Easy 项目地址: https://gitcode.com/GitHub_Trending/pw/pwndbg Pwndbg作为GDB和LLDB的增强扩展&#…...

云容笔谈效果对比评测: vs Stable Diffusion 3.5东方人像生成质量深度分析

云容笔谈效果对比评测: vs Stable Diffusion 3.5东方人像生成质量深度分析 1. 评测背景与目的 东方人像生成一直是AI图像生成领域的特殊挑战。西方模型在生成东方人脸时常常出现面部结构不自然、表情僵硬、缺乏东方神韵等问题。本次评测将深入对比「云容笔谈」和S…...

十分钟用快马AI搭建中科院期刊分区查询工具原型

最近在帮实验室整理投稿期刊清单时,发现中科院分区查询是个高频需求。每次都要登录官网、输入验证码、反复跳转页面,特别影响效率。于是想做个简易查询工具,正好用InsCode(快马)平台试试快速原型开发,没想到十分钟就搭出了可用版本…...

【论文速递】BubbleRAG:为“黑盒”知识图谱打造高召回、高精度的证据检索引擎

黑盒知识图谱检索中的三个挑战:语义实例化不确定性、结构路径不确定性、证据比较不确定性 01 研究背景 在复杂问答(如多跳推理、专家识别)任务中,基于知识图谱(KG)的检索增强生成(RAG&#x…...

SSM+Vue大学生兼职网站源码+论文

代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 分享万套开题报告任务书答辩PPT模板 作者完整代码目录供你选择: 《SpringBoot网站项目》1800套 《SSM网站项目》1500套 《小程序项目》1600套 《APP项目》1500套 《Python网站项目》…...

别再只会用AT指令了!用GD32F103驱动ESP8266实现MQTT连接阿里云(附完整源码)

从AT指令到MQTT协议:GD32F103ESP8266直连阿里云物联网平台实战 在物联网设备开发中,ESP8266作为性价比极高的Wi-Fi模块,常被用于实现设备联网功能。大多数开发者对它的认知停留在AT指令操作层面,通过串口发送简单的AT命令实现TCP连…...