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

news2024/12/29 8:49:50

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

简介:

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

一、详细分析

通常加密分为如下三种:

  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模块针对这三种加密类型分别封装,并提供常用的大部分加密算法大家有兴趣可以去了解一下。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/674273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电力安全带安全帽穿戴监测算法

电力安全带安全帽穿戴监测算法通过TensorFlow机器学习的框架,电力安全带安全帽穿戴监测算法对人员的安全带和安全帽佩戴情况进行实时监测,当检测到有工作人员未正确佩戴安全帽或安全带时,电力安全带安全帽穿戴监测算法将自动发出警报提示现场…

论文精读 BlazePose结合LSTM 跌倒检测

Fall Detection for Shipboard Seafarers Based on Optimized BlazePose and LSTM 基于BlazePose-LSTM的海员跌倒检测 本博客通过全文翻译和总结的方式对论文进行精读。读完此论文颇受启发,比如: 视频中的时间序列问题;文章简单明了的整体脉…

29基于贝叶斯(Bayes)判别的机场航班延误因素分析(附matlab程序)

1.简述 学习目标: 基于贝叶斯判别的机场航班延误因素分析 利用所创建的朴素贝叶斯分类器对象ObjBayes,对训练样本进行判别 并利用贝叶斯预测误差统计 中国民航业近年来快速发展,航班量增多,航班密度逐步加大,许多资源配置的矛盾也日益凸显出来.机场大面…

Godot 4 源码分析 - 代码自动补全流程

使用Godot 4过程中,有一点比较吸引我:代码自动补全 用RAD开发时,代码自动补全功能一直被吐槽,主要是速度慢 但我看Godot 4中的Script编写过程中,代码补全很快,这个可以研究一下。 研究代码可找到&#x…

Linux国产操作系统,UCA-系统工程师学习必备技能,使用dpkg管理软件包、apt命令、内网获取依赖包及源码安装

目录 ​编辑 1.使用dpkg管理软件包 2.apt命令 3.内网获取依赖包 4.源码安装 1.使用dpkg管理软件包 第一种方法当然可以上网搜索软件安装包,下载然后解压成软件。 第二种也就是我接下来要介绍的,dpkg 命令,dpkg 全称叫做debian package…

Linux系统编程:进程的管理和创建

目录 一. 什么是进程 二. Linux对进程的管理方法 2.1 PCB描述进程 2.2 进程的组织 2.3 进程的查看 三. 子进程的创建 3.1 子进程创建函数fork的使用 3.2 子进程创建的原理 四. 总结 一. 什么是进程 进程(process)是指计算机中已经存在并运行的…

动态规划 DP (一)

1.动态规划(Dynamic Programming,简称DP) 维基百科的定义说的很清楚: 动态规划不能解决所有的问题, 只能应用于有最优子结构的问题。例如背包问题、最长公共子序列问题、最短路径问题等。 最优子结构:局部…

Vue3通信方式之defineProps、defineEmits、useAttrs、插件mitt和v-model

目录 1、使用defineProps2、使用defineEmits接受自定义事件2.1原生DOM事件2.2自定义事件 3、全局事件总线(插件mitt)4、v-model5、useAttrs 1、使用defineProps props可以实现父子组件通信,在vue3中我们可以通过defineProps获取父组件传递的数据。且在组…

Opencv医学图片分割-以血管、胼胝体MR等分割为例

用到环境 1、pycharm community edition 2022.3.2 2、Python 3.10 后面应该会传代码到资源,比较需要的可以私信我。 总体设计 图1 扩展实验二“医学图像分割”流程图 ## 具体步骤 1. 导入OpenCV和NumPy库 2. 定义阈值分割方法threshold_segmentation,接…

spring框架-概述(spring特性、生命周期)(一)

文章目录 什么是springspring重要特性spring生命周期知识扩展 什么是spring Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器 ,是为了解决企业级编程开发中的复杂性,实现敏捷开发…

[进阶]网络通信:TCP通信-支持与多个客户端同时通信

目前我们开发的服务端程序,是否可以支持与多个客户端同时通信? 不可以的。因为服务端现在只有一个主线程,只能处理一个客户端的消息。 代码演示如下: 客户端: public class Client {public…

SpringBoot 异常处理的最佳实践

SpringBoot 异常处理的最佳实践 在 Web 开发中,异常处理是非常重要的一环。在 SpringBoot 框架中,异常处理方式有很多种,但是如何选择最佳实践呢?本文将介绍 SpringBoot 异常处理的最佳实践,并附带代码示例。 异常处理…

flutter - 编写 阿里云-金融级实名认证插件

项目中有实名认证的需求,用户上传身份证反正面,进行人脸核验,后台集成的是阿里云的金融级实名认证SDK,巧合的是阿里云没有packages 需要自己造轮子。 废话不多少,直接上代码: 新建项目 ProjectType Plugin…

网站图片优化技巧及最佳实践

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言使用适当的图片格式…

0017-TIPS-pawnyable : eBPF

原文 BPFの導入 検証器とJITコンパイラ eBPFのバグの悪用 题目下载 BPF介绍 BPF 在介绍eBPF之前,先介绍其前身BPF。 随着时代的发展,BPF的用途越来越广泛,扩展也越来越多。在重大更改后的BPF有时被称为eBPF(扩展BPF&#xff09…

路漫漫其修远兮,吾将上下而求索

路漫漫其修远兮,吾将上下而求索 一、坚定信念二、持之以恒地努力三、谦虚和学习的态度四、上下而求索也要遵循道德底线和原则五、建立合适的人际关系和互助机制六、坚定自己的信仰和信念七、个人经验与体会 路漫漫其修远兮,吾将上下而求索——这句话不仅…

python期末上机题:

1、编写Python程序,创建类Temperature,其包含成员变量degree(表示温度)以及实例方法ToHuaShiDu()和ToSheShiDu,并编写测试代码。 程序运行示例: 请输入摄氏温度:30 摄氏温度 30.0&#xff0…

栈和队列(一)

文章目录 顺序表,链表的有点和缺点链表顺序表 栈和队列栈的实现栈的应用(括号匹配问题) 顺序表,链表的有点和缺点 链表 优点: 1、任意位置插入删除,时间复杂度位O(1) 2、按需申请释放空间 缺点&#xff1a…

Prompt Engineering 面面观

作者:紫气东来 项目地址:https://zhuanlan.zhihu.com/p/632369186 一、概述 提示工程(Prompt Engineering),也称为 In-Context Prompting,是指在不更新模型权重的情况下如何与 LLM 交互以引导其行为以获得…

Latex长表格

示例一: 输出一个长表格的示例。 代码: \documentclass[jou,apacite]{apa6} \usepackage{multirow} \usepackage{array} \newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}} \usepackage{longtable}%\usepackage{showframe} % to visualize…