网络安全——数据的加密与签名,RSA介绍

一、 密码概述

发送者对明文进行加密然后生成密文,接受者再对密文解密得到明文的过程。 现在使用的所有加密算法都是公开的!但是密钥肯定不是公开的。

1 散列(哈希)函数
  • 通常有MD5、SHA1、SHA256、SHA512
  • 实质是抽取特征码,这样一般不会重复!是的,不同的文本它的哈希结果是有可能相同的,但概率很小。
    (举例:比如想要识别一个人,我们可以通过他的指纹来锁定他,指纹出现相同的概率很低吧!在这里,人就相当于数据,而指纹就相当于对人这个数据进行hash后得到的结果)
  • 对任意一个二进制数据进行哈希,可以得到定长的字符串结果,例如MD5哈希结果是128位,更多是以32个字符的十六进制格式哈希输出
  • 还有就是不可逆的,既然是不可逆的,那么当然不是用来加密的,而是签名
2 对称加密算法
  • 有DES、3DES、AES
  • 加密和解密使用同一个秘钥,加密解密的速度快
  • 适合给大数据进行加密
  • 密钥的安全性非常重要
3 非对称加密算法:RSA
  1. 使用 公钥 加密,使用 私钥 解密
  2. 使用 私钥 加密,使用 公钥 解密(私钥签名,公钥验签)
  3. 更安全,当然速度会慢下来,如果随着硬件的突破,使用越来越多,特别是支付

1是对数据加密,2是防止伪造客户端数据,对服务器攻击,更重要是防止模拟了客户端,进行支付相关的操作

4 对称加密与非对称加密的区别

就个人理解,最主要的就是密钥的不同,对称加密客户端和服务端使用同一个密钥,非对称加密使用不同的密钥。

客户端的代码是很容易被破解的,IDA、hopper disassembler工具的使用,使得破解更加简单而且破解后容易阅读,再配合Charles抓取网络包,根据关键字很容易就定位到加密代码,然后获取密钥。

由于对称加密密钥一样,所以解密就轻而易举;但是非对称加密就不会出现这种问题,因为服务端和客户端的密钥不一样,公钥加密私钥解密,加密的公钥也是公开的,而私钥一般放在服务端,黑客一般是拿不到的。

另外就是没有密钥情况下强制暴力破解,非对称加密也要比对称加密花的多的多的时间来破解。一条信息就要花你几年的时间,所以很安全。

二、加密与签名区别(RSA)

  • 最大的区别是,加密是可逆的,而签名是不可逆的。

比如对于"Hello world!"进行加密后得到结果R,还可以使用密钥通过结果R解密得到"Hello world!";而对"Hello world!"进行签名得到结果R,却不能使用密钥通过R获得"Hello world!",要不然的话压缩算法要逆天了!比如hash,使用几十个字符就能存储几G几T的数据。。。

  • 加密是对数据进行机密性保护,签名主要用于身份验证

比如A对B发送了信息Message;通过加密后,即便C通过网络包截取获得了Message,它也不知道里面的具体内容,只能看到一堆乱码;通过签名,假设D也用相同的加密算法发送了此Message,但是签名错误,那么B通过签名依然拒绝D的Message。

  • 以当前使用的比较多的RSA为例举例:

假设A、B双方均拥有一对公私钥(PUB_APRI_APUB_BPRI_B)。

A向B发送Message的整个签名和加密的过程如下:

  1. A先使用HASH对Message生成一个固定长度的信息摘要Message_hash_A
  2. A使用A的私钥PRI_AMessage_hash_A进行签名得到Message_sign(这里为什么不直接对Message进行签名,而要对Message_hash_A进行签名呢?因为Message的长度可能很长,而Message_hash_A的长度则是固定的,这样性能更高,格式也固定,况且hash的结果一般不会出现重复的可能)
  3. A接着使用B的公钥PUB_B对信息Message和信息Message_sign进行加密得到Message_RSA,这时A将Message_RSA发送给B。

当B接收到A的信息Message_RSA后,获取Message的步骤如下:

  1. B用自己的私钥PRI_B解密得到明文:MessageMessage_sign
  2. 然后B使用A的公钥PUB_AMessage_sign得到Message_hash_A;同时,B再对Message使用与A相同的HASH得到Message_hash_B
  3. 如果Message_hash_AMessage_hash_B相同,则说明Message没有被篡改过。

上面的过程中,A知道A的公私钥同时也要知道B的公钥;同理B要知道A的公钥和B的公私钥

关于公私钥再打个比方:公钥就像一把锁一样将数据锁住;私钥就像钥匙一样,能将对应的锁打开。

公钥加密,私钥解密的好处是:公钥可以公开,那么无论谁有公钥都可以给你发送信息,而且也只有你才能解密

我们经常使用的Github就是使用了签名的方法,SSH,在本地电脑生成一对公私钥,将公钥传到github,然后使用私钥进行签名,github通过公钥延签后认为你的身份合法。

另外,加密和编码是不一样的,比如ASCII是属于编码,是将0~255与字符一一对应。

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

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

相关文章

网站打开速度测试工具:互联网优化的得力助手

在信息飞速流转的互联网时代,网站如同企业与用户对话的窗口,其打开速度直接关乎用户体验,乃至业务的成败。所幸,一系列专业的网站打开速度测试工具应运而生,它们宛如幕后的技术侦探,精准剖析网站性能&#…

shell脚本实战案例

文章目录 实战第一坑功能说明脚本实现 实战第一坑 实战第一坑:在Windows系统写了一个脚本,比如上面,随后上传到服务,执行会报错 原因: 解决方案:在linux系统touch文件,并通过vim添加内容&…

Face2QR:可根据人脸图像生成二维码,还可以扫描,以后个人名片就这样用了!

今天给大家介绍的是一种专为生成个性化二维码而设计的新方法Face2QR,可以将美观、人脸识别和可扫描性完美地融合在一起。 下图展示为Face2QR 生成的面部图像(第一行)和二维码图像(第二行)。生成的二维码不仅忠实地保留…

数据结构---队列(Queue)

1. 简介 队列(Queue)是一种常用的数据结构,它遵循先进先出(FIFO,First In First Out)的原则。这意味着第一个进入队列的元素将是第一个被移除的元素。队列在计算机科学中有着广泛的应用,比如任…

玩游戏没有flash插件的解决方案(No Flash)

一、概述 在网页游戏开发领域,Flash和H5是两种主流的技术。Flash游戏曾经占据主导地位,但随着HTML5技术的发展和浏览器对Flash支持的逐渐减少,H5游戏逐渐成为主流。本教程将详细介绍Flash和H5的区别,并提供将Flash游戏转换为H5游戏…

如何查看电脑的屏幕刷新率?

1、按一下键盘的 win i 键,打开如下界面,选择【系统】: 2、选择【屏幕】-【高级显示设置】 如下位置,显示屏幕的刷新率:60Hz 如果可以更改,则选择更高的刷新率,有助于电脑使用起来界面更加流…

新书速览|循序渐进Node.js企业级开发实践

《循序渐进Node.js企业级开发实践》 1 本书内容 《循序渐进Node.js企业级开发实践》结合作者多年一线开发实践,系统地介绍了Node.js技术栈及其在企业级开发中的应用。全书共分5部分,第1部分基础知识(第1~3章)&#xf…

AUTOSAR AP和CP的安全要求规范(Safety Req)详细解读

一、规范的编制的背景原因 编制该规范的原因 确保系统安全性和可靠性 随着汽车电子系统日益复杂,功能不断增加,对安全性和可靠性的要求也越来越高。该规范为AUTOSAR平台在安全执行、配置、更新、信息交换、数据处理等多方面制定了明确要求,…

数仓技术hive与oracle对比(四)

问题处理 sqoop导入异常 将oracle数据库中的表,用sqoop导入hive时,如果表中字段值含有“,”,会导致导入hive后,每一行所有字段的内容都放在了第一个字段,其他字段均没有值。这是因为hive底层是以文件的形…

流网络等价性证明:边分解后的最大流保持不变

流网络等价性证明:边分解后的最大流保持不变 问题描述证明思路伪代码C 代码实现解释问题描述 在流网络中,证明将一条边分解为两条边所得到的是一个等价的网络。具体来说,假设流网络 $ G $ 包含边 $ (u, v) $,我们以如下方式创建一个新的流网络 $ G’ $: 创建一个新结点 $…

应用案例 | 船舶海洋: 水下无人航行器数字样机功能模型构建

水下无人航行器数字样机功能模型构建 一、项目背景 为响应水下装备系统研制数字化转型及装备系统数字样机建设的需要,以某型号水下无人航行器(Underwater Unmanned Vehicle,UUV)为例,构建UUV数字样机1.0功能模型。针对…

RabbitMQ七种工作模式之简单模式, 工作队列模式, 发布订阅模式, 路由模式, 通配符模式

文章目录 一. Simple(简单模式)公共代码:生产者:消费者: 二. Work Queue(工作队列模式)公共代码:生产者:消费者1, 消费者2(代码相同): 三. Publish/Subscribe(发布/订阅模式)公共代码:生产者:消费者: 四. Routing(路由模式)公共代码:消费者: 五. Topics(通配符模式)公共代码:生…

前端知识1html

VScode一些快捷键 Ctrl/——注释 !——生成html框架元素 *n——生成n个标签 直接书写html的名字回车生成对应的标签 常见标签 span&#xff1a; <span style"color: red;">hello</span> <span>demo</span> span实现&#xff1a; 标题…

Push an existing folder和Push an existing Git repository的区别

Push an existing folder 和 Push an existing Git repository 是在使用 Git 服务&#xff08;如 GitHub、GitLab、Bitbucket 等&#xff09;时两个常见的操作选项。它们的区别主要体现在项目的初始化和版本控制状态上&#xff1a; 1. Push an existing folder 适用场景&#…

Netty入门(快速了解以及使用netty)

二. Netty 入门 1. 概述 1.1 Netty 是什么&#xff1f; Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.Netty 是一个异步的、基于事件驱动的网络应用框架&…

Zemax 中 ZBF 文件激光传播的描述

激光传播是指激光束在空间或介质中传播的方式。激光的独特特性&#xff0c;例如相干性、单色性和准直性&#xff0c;使其行为与普通光源不同。了解激光传播的原理在光学、通信、医疗技术和科学研究等领域至关重要。 激光产生高斯光束&#xff0c;其中强度在光束横截面上服从高…

DataSophon集成CMAK KafkaManager

本次集成基于DDP1.2.1 集成CMAK-3.0.0.6 设计的json和tar包我放网盘了. 通过网盘分享的文件&#xff1a;DDP集成CMAK 链接: https://pan.baidu.com/s/1BR70Ajj9FxvjBlsOX4Ivhw?pwdcpmc 提取码: cpmc CMAK github上提供了zip压缩包.将压缩包解压之后 在根目录下加入启动脚本…

go基础总结

最近参加字节跳动后端青训营&#xff0c;技术栈是go。go跟Java还是有些区别的&#xff0c;所以自己做点笔记来总结总结go的基础语法 数据类型 go的数据类型有以下几类&#xff1a; 数值类型&#xff1a;整形分为(u)int8、(u)int16、(u)int32、byte、rune、uintptr…&#xf…

docker环境搭建

目录 环境配置指定docker镜像源 环境配置 使用ubuntu20版本 最好先修改一下镜像源&#xff0c;不然要下20分钟 sudo apt install docker.io还需要装以下这些 sudo apt-get install ca-certificates sudo apt-get install curl sudo apt-get install gnupg sudo apt-get ins…

策略模式实战 - 鸭展

该示例出自著名的《HeadFirst》系列的《HeadFirst设计模式》图书的第一个设计模式。用一个鸭子展览的小应用&#xff0c;一步步揭示了如何引入和使用策略模式将示例改造的完美一些。 文章目录 红头鸭与绿头鸭橡皮鸭和诱饵鸭用接口代替继承组合关系与策略模式 红头鸭与绿头鸭 当…