加密算法 AES和RSA

news2025/1/12 0:54:41

一,加密

(一)加密基础?

通过互联网发送数据,数据可能会被第三者恶意窃听,造成损失。因此需要给重要的数据进行加密,加密后的数据被称为“密文”。接收方通过解除加密或得原本的数据,把密文恢复为原本数据的操作叫做“解密”。像这样就减少了数据被恶意窃听的风险。

那么加密是怎么操作的呢?

首先计算机会使用1和0这两个数据表示二进制来管理所有数据。虽然数据有多种格式,图片,音频,视频,文档等,但在计算机中都是用二进制来表示。

对计算机来说,数据就是一串有意义的数字。

密文就是通过某种运算使得计算机无法解释的无规律数字。

加密运算用到的“密钥”,就是对数据进行数值运算,把数据变成第三者无法理解的形式的过程。

比如数据a是一串数据,通过“密钥”进行换算变成b,这样对于不知道计算过程的C来说,数据b就无法表示原来数据a的意思。原本a的二进制表示的数字是1,传输过程中却变成了数据b表示数字2,这样由于“密钥”和运算吧原本数据改变,防止第三方简单获取的方式就是加密。

a:01

b:10

“密钥”和运算:1和0互换

01 +“密钥”和运算 = 10

当然实际生产中用到的算法和密钥肯定不是这么简单的。

(二)加密数据算法

加密数据的方法可以分两种,加解密使用相同的密钥的“共享秘钥加密”和分别使用不同密钥的“公开密钥加密”

1,共享秘钥加密 - 对称加密

是什么?

加密解密都使用相同密钥的一种加密方式,由于使用密钥相同,所以也被称作“对称加密"。

实现原理

  1. 对称加密算法采用单密钥加密,在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方

  1. 接收方收到加密后的报文后,结合解密算法使用相同密钥解密组合后得出原始数据。

实现算法

实现共享密钥加密算法的有凯撒密码,AES,DES,动态口令,其中AES应用场景最为广泛。

优缺点

效率高,算法简单,系统消耗小,适合加密大量数据。

安全问题

由于使用了相同的秘钥进行加密和解密,一旦秘钥被第三方获取,所传输的信息将

不在安全。

因此需要把密钥安全的送出去,这就是“密钥分配问题”

2,公开密钥加密 - 非对称加密

是什么?

是指加密和解密分别使用不同的密钥的一种加密方法,也被成为“非对称加密”。加密用的密钥称为“公开密钥”,解密用的密钥称为:“私有密钥”。

实现原理

  1. 甲使用乙的公钥并结合相应的非对称算法将明文加密后发送给乙,并将密文发送给乙。

  1. 乙收到密文后,结合自己的私钥和非对称算法解密得到明文,得到最初的明文。

实现算法

实现公开加密算法有RAS算法,椭圆曲线加密算法等,最为广泛的是RSA算法。

优缺点

优:

1,安全性更高 :与共享密钥加密不同的是,公开密钥加密不会出现密钥分配问题。

缺:

1,复杂度高 :因为加密和解密用的是不同密钥,而且无法从一个密钥推导出另一个密钥,且公钥加密的信息只能用同一方的私钥进行解密。

2,解密加密比较耗时:非对称加密的缺点是算法非常复杂,导致加密大量数据所用的时间较长

3,公钥无法自证清白

“公开密钥”无法证明自己的身份,导致“公开密钥”可靠性出现问题。

例如:

正常情况下,A与B交互,A向B发送公钥,B通过A发来的公钥加密,A接收到密文后通过私钥解密。

异常情况:A与B交互,A向B发送公钥的过程中可以被C先截取A的公钥,然后C向B发出公钥,由于“公开密钥”无法自证清白,无法显示自己是由谁生成的,所以B不会发现接收到的“公开密钥”是谁C发送的。

在接下来的传输过程中,B通过C发送的“公开密钥”进行数据加密,会被C“私有密钥”解密后,然后通过A的“公开密钥”加密,在传输给A,A通过自己签发的“私有密钥”解密成功,也不会发现这中间出现了什么问题。

安全性的问题可以通过“数字证书”来解决,“数字证书”本身含有自身信息来表达身份,同时依赖认证中心的信任链条来保证安全性。

二,代码和实例

AES

密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。,目前已被广泛应用。

RSA

RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制 。

RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥 。

备注:

代码实例在以下路径,JS和java的实例,用于前后端密码传输过程中的加解密。

链接:https://pan.baidu.com/s/1wNzBErch3dIa5sxGRiIdMQ

提取码:lvu4

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

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

相关文章

人工智能卷积算法

文章目录前言数字信号处理与卷积运算卷积公式与计算过程边缘卷积计算与0填充NumPy卷积函数二维矩阵卷积计算图像卷积应用实例总结前言 卷积运算实际上是一种常见的数学方法,与加法,乘法等运算类似,都是由两个输入的到一个输出。不同的是&…

迷宫问题---数据结构实践作业

迷宫问题—数据结构实践作业 ✅作者简介:大家好,我是新小白2022,让我们一起学习,共同进步吧🏆 📃个人主页:新小白2022的CSDN博客 🔥系列专栏:算法与数据结构 💖如果觉得博…

什么是HAL库和标准库,区别在哪里?

参考文章https://blog.csdn.net/u012846795/article/details/122227823 参考文章 https://zhuanlan.zhihu.com/p/581798453 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全…

Java 面向对象程序设计 消息、继承与多态实验 课程设计研究报告

代码:Java计算机课程设计面向对象程序设计对战游戏SwingGUI界面-Java文档类资源-CSDN文库 一、课程设计内容 一个游戏中有多种角色(Character),例如:国王(King)、皇后(Queen)、骑士&#xff0…

【Linux多线程】

Linux多线程Linux线程概念什么是线程线程的优点线程的缺点线程异常线程用途Linux进程VS线程进程和线程进程的多个线程共享Linux线程控制POSIX线程库线程创建线程等待线程终止分离线程线程ID及进程地址空间布局Linux线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程…

JavaScript 如何正确的分析报错信息

文章目录前言一、报错类型1.控制台报错2.终端报错二、错误追查总结前言 摸爬滚打了这么长时间…总结了一些排查错误的经验, 总的来说, 这是一篇JavaScript新手向文章. 里面会有些不那么系统性的, 呃, 知识? 一、报错类型 报错信息该怎么看, 怎么根据信息快速的追查错误. 1.…

瑞吉外卖项目

技术选型: 1、JAVA版本:JDK11 2、数据库:mysql5.7 Navicat 3、后端框架:SpringBoot SpringMVC MyBatisPlus 4、工具类:发邮件工具类、生成验证码工具类 5、项目优化:Nginx、Redis、读写分离 项目来…

2022. 12 青少年机器人技术等级考试理论综合试卷(五级)

2022.年12月青少年机器人技术等级考试理论综合试卷(五级) 分数: 100 题数: 30 一、 单选题(共 20 题, 共 80 分) 1.下列程序执行后,串口监视器显示的相应内容是? ( ) A.1 B.2 C.4 D.…

WPF绑定(Binding)下的数据验证IDataErrorInfo

绑定下的数据验证 WPF中Binding数据校验、并捕获异常信息的三种方式讲到了三种方式,其中使用ValidatinRule的方式比较推荐,但是如果一个类中有多个属性,要为每个属性都要声明一个ValidatinRule,这样做非常麻烦。可以让类继承自ID…

【High 翻天】Higer-order Networks with Battiston Federico (8)

目录传播与社会动力学(2)Opinion and cultural dynamicsVoter modelMajority modelsContinuous models of opinion dynamicsCultural dynamics传播与社会动力学(2) 在本节将讨论一些观点和文化动力学模型,它们基于物理…

【JavaSE】反射

一、概念反射是在运行期间,动态获取对象的属性和方法二、相关的类在Java的反射里主要有以下几个类:Class类,这是反射的起源,反射必须要先获取Class对象,其次是Field类,当我们需要通过反射获取私有字段时就需…

老杨说运维 | 2023,浅谈智能运维趋势(一)

(文末附视频回顾,一键直达精彩内容) 前言: 2022年,是经济被影响的一年,这一年无论是企业还是个人经济形势都呈下滑趋势,消费降级状态或许不会因为2022的结束而改观。 全球经济紧缩的状态下&am…

不仅会编程还要会英语(博主英语小笔记)1.1名词

目录 1-1名词的概念和分类 1、名词的概念 2.名词根据其意义可以分为专有名词和普通名词 (1)专有名词: (2)普通名词: 1-1名词的概念和分类 1、名词的概念 名词是表示人、动物、地点、物品以…

字符串常用函数介绍及模拟实现

🐎作者的话 本文介绍字符串常用的函数如何使用及其模拟实现~ 跳跃式目录strlen介绍strcpy介绍strcat介绍strcmp介绍strncpy介绍strncat介绍strncmp介绍strstr介绍strchr介绍strrchr介绍memcpy介绍memmove介绍memcmp介绍memset介绍strtok介绍strlen介绍 函数原型&…

GO语言配置和基础语法应用(二)

Go 语言结构 在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明引入包函数变量语句 & 表达式注释 接下来让我们来看下简单的代码 package ma…

Allegro如何导出placement操作指导

Allegro如何导出placement操作指导 在做PCB布局的时候,有时需要导出和导入Placement,placement文件是板上所有器件的坐标以及所在层面的文件 具体操作如下 导出placement文件,选择File

实现用户进程

文章目录前言前置知识实验操作实验一实验二前言 博客记录《操作系统真象还原》第十一章实验的操作~ 实验环境:ubuntu18.04VMware , Bochs下载安装 实验内容: 定义并初始化 TSS。实现用户进程。 前置知识 TSS 简介 TSS,即 Tas…

time和datetime之类的东西

这篇文章是学习数据可视化的记录,原视频链接 B站视频连接 time 先来看一张图 struct_time(时间元组)是作为时间戳和格式化后的字符串的桥梁的 mktime(t)是将指定时间元组转换为时间戳的 localtime()是将指定时间戳转换为时间元组的,可以不写时间戳&…

【一文教你学会动态内存管理】

1.为什么会存在动态内存分配? 2. 动态内存函数的介绍 2.1 malloc函数和free函数 2.2 calloc函数 2.3 realloc 3. 常见的动态内存错误 3.1 对NULL指针的解引用操作 3.2 对动态开辟空间的越界访问 3.3 对非动态开辟内存使用free释放 3.4 使用free释放一块动态开…

Uniswap v3 详解(一):设计原理

刚看完 Uniswap v2 的代码,本来打算写一个 Uniswap v2 设计与实现,结果 Uniswap v3 就发布了。趁着这个机会就先写一个 Uniswap v3 设计与实现吧。 因为 v3 版本的实现复杂度和 v2 已经不在一个量级了,难免会有理解上的偏差,本文…