区块链100问之加密算法

区块链100问之加密算法

文章目录

      • 区块链100问之加密算法
        • 哈希算法是什么?有什么特征?
        • 哈希碰撞是什么?雪崩效应呢?如何解决?
        • 哈希算法的作用?
        • 对称加密和非对称加密有什么区别?
        • 为什么会引入非对称加密?
        • 公钥密码的难题来自哪里?
        • RSA算法的流程是什么?有什么缺点?
        • 什么是数字签名?是通过解密验证吗?什么是证书?
        • 椭圆曲线ECC是什么?这怎么可以实现加密?
          • ECC的计算法则?
          • 如何实现加密?

哈希算法是什么?有什么特征?

答:哈希算法是将任意长度输入的字符串/文件/数据(message) 经过复杂变换,变成以固定长度输出的哈希值。(或叫做消息摘要和指纹)
y = H ( x ) H : 压缩映射 ( 多对一 , 即及可能出现哈希冲突 ) ∣ Y ∣ < ∣ X ∣ ( y 的空间远小于 x 的空间 ) y 的输出长度与 x 无关 y=H(x)\\ H: 压缩映射(多对一,即及可能出现哈希冲突)\\ |Y|<|X| \ (y的空间远小于x的空间)\\ y的输出长度与x无关 y=H(x)H:压缩映射(多对一,即及可能出现哈希冲突)Y<X (y的空间远小于x的空间)y的输出长度与x无关
特征:

  1. 正向计算简易便捷
  2. 逆向计算困难且复杂(不可逆)
  3. 异入异出:尽量单调
  4. 对输入敏感(x改变很小,y改变会很大)

有人就会问了,逆向困难那么哈希函数加密的密码我们是如何验证的,答案就是每次输入同样的内容(密码)走一遍加密流程,得到结果一样则验证成功。

在这里插入图片描述

哈希碰撞是什么?雪崩效应呢?如何解决?

答:不同的输入经过函数H(x)却得到了相同的哈希值。

雪崩效应:明文微小的区别会导致哈希值非常明显的区别。

解决:

  1. 链地址法

在这里插入图片描述

  1. 开放地址法

    思想:一旦发生冲突,就去寻找下 一个空的散列表地址,只要散列表足够大,空的散列地址总能找到。

哈希算法的作用?

答:

  1. 消息认证:相同消息产生的Hash值相同
  2. 产生单向口令文件:OS中存储口令的Hash值,输入口令转换成Hash值进行比对
  3. 入侵检测和消毒检测:每个文件的Hash值存储在安全系统中,随后重新计算可以判断文件是否被修改过
  4. 产生伪随机数:基于Hash函数的PRF可用于对称密码中的秘钥产生
    在这里插入图片描述
对称加密和非对称加密有什么区别?

答:

加密过程:数据 + 密钥 = 密文
解密过程:密文 - 密钥 = 数据

  • 对称加密:

    在这里插入图片描述

    • 使用一个秘钥加密,必须使用相同的秘钥才解密。(可逆 VS哈希)

    • 常见算法:DES、3DES、Blowfish

  • 非对称加密:

    在这里插入图片描述

    加密和解密使用不同的秘钥,公开的为公钥,私有的为私钥。

    • 优点:公钥被获取,没有私钥仍无法破解。

    • 常见算法:RSA、DSA、ECC

    • 流程:拿到A公钥的任意人可以用公钥加密,A接收到后用私钥解密

为什么会引入非对称加密?

答:对称加密有三困难:扩展困难;身份认证困难;秘钥配送问题困难

解决:

  1. 事先共享密钥

  2. 通过密钥分配中心解决

  3. Diffie-Hellman密钥交换:双方使用各自的私钥和对方的公钥来计算一个共享的密钥
    在这里插入图片描述

  4. 通过公钥密码解决:非对称加密

公钥密码的难题来自哪里?

答:

  • 大整数因子分解问题IFP
  • 离散对数问题DIP
RSA算法的流程是什么?有什么缺点?

答:

流程:

在这里插入图片描述

  1. 加密:对明文m进行加密(e,N)得到密文c
    m e m o d N = c m^emod \ N=c\\ memod N=c

  2. 解密:密文c解密(d,N)得到明文m
    c d m o d N = m c^dmod\ N=m cdmod N=m

缺点:公钥认证的问题;速度处理太慢。

什么是数字签名?是通过解密验证吗?什么是证书?

答:

  • 为了向别人证明自己的身份,需要对文件进行自己的数字签名,签名后可以由任何人用公钥验证

  • 同样在公钥验证,并不是通过解密验证,而是对一段要被签名的数据进行加密后得到的摘要进行验证,具体过程也就是:

    1. 发送方需要将原始数据和签名一起发送给接收方
    2. 接收方通过公钥对数字签名解密得到摘要
    3. 接收方将明文同样用SHA256计算得到摘要信息与解密出的作对比,想吐则报文没有被篡改
  • 证书是CA对公钥进行数字认证的过程(防止私钥泄露)

    1. CA将他人公钥当做“明文”,用自己的私钥对他人的公钥进行数字签名
    2. 接收方通过CA的公钥对签名进行解密得到发送方的公钥

    其实就是加了一个“中介”来得到认证过的对方的公钥,这个中介值得信任。

椭圆曲线ECC是什么?这怎么可以实现加密?

答:

一条椭圆曲线是指在射影平面上满足威尔斯特拉斯方程(Weierstrass)所有点的集合))
Y 2 Z + a 1 X Y Z + a 3 Y Z 2 = X 3 + a 2 X 2 Z + a 4 X Z 2 + a 6 Z 3 其中系数 a i ( i = 1 , 2 , 3 … 6 ) 定义在某个域上 ( 有理数域 / 无理数域 / 实数域 / 复数域 / 有限域 G F ( p Y^2Z+a_1XYZ+a_3YZ^2=X^3+a_2X^2Z+a_4XZ^2+a_6Z^3\\其中系数 a_i( i=1,2,3…6)定义在某个域上(有理数域/无理数域/实数域/复数域/有限域GF(p Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3其中系数ai(i=1,2,36)定义在某个域上(有理数域/无理数域/实数域/复数域/有限域GF(p
注意:

  1. 椭圆曲线方程是一个齐次方程
  2. 曲线上的每个点都必须是非奇异的(光滑的),偏导数 Fx(X,Y,Z)、Fy(X,Y,Z)、Fz(X,Y,Z)不同为03.曲线的形状并不是椭圆。

普通方程

ECC的计算法则?

在这里插入图片描述

简述:连线取交点,再取负元。

特殊的:两个垂直点相加为无穷

在这里插入图片描述

扩展相乘两个相同点相加则找切线,得到另一个交点,再取负元。

在这里插入图片描述

如何实现加密?

选定基点G,每个用户选择一个私钥n
通过私钥 n 产生公钥 P = n G 通过私钥n \ 产生公钥P=nG 通过私钥n 产生公钥P=nG
A向B发送文件流程

  1. B用私钥,生成公钥
    P B = n b × G P_B=n_b\times{G} PB=nb×G

  2. A产生随机数k,使用B的公钥加密,并对于密文M生成点对
    { k G , M + k P B } \{kG,M+kP_B\} {kG,M+kPB}

  3. B拿到点对使用自己私钥进行核验
    ( M + k P B ) − n b × ( k G ) = M + k × n b × G − n b × k × G = M (M+kP_B)-n_b×(kG)=\\M+k×n_b×G-n_b×k×G=M (M+kPB)nb×(kG)=M+k×nb×Gnb×k×G=M

总结:谁查看文件谁需要生成公钥P,本质上是应用了Abel群运算的可交换性

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

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

相关文章

HTML应用指南:利用GET请求获取全国盒马门店位置信息

随着新零售业态的发展,门店位置信息的获取变得至关重要。作为新零售领域的先锋,盒马鲜生不仅在商业模式创新上持续领先,还积极构建广泛的门店网络,以支持其不断增长的用户群体。本篇文章,我们将继续探究GET请求的实际应用,我们使用Python的requests库通过GET请求,从盒马…

(原创,可用)SSH实现内外网安全穿透(安全不怕防火墙)

目前有A、B终端和一台服务器&#xff0c;A、B机器不能直接访问&#xff0c;服务器不能直接访问A、B终端但是A、B终端可以访问服务器&#xff0c;这个场景很像我们有一台电脑在单位内网&#xff0c;外机器想访问内网系统&#xff0c;可能大家目前想到的就是frp之类穿透工具&…

keil5显示[NO J-link found]解决办法——【J-LINK】驱动下载安装教程

打开电脑的设备管理器&#xff0c;检查通用串行总线控制器 看这里发现没有J-link driver&#xff0c;于是开始安装下驱动。 一、下载 打开J-link下载官网链接&#xff1a; SEGGER - The Embedded Experts - Downloads 点击左下角下载按钮 二、安装 等待下载完成以后双击下载…

Maven的dependencyManagements锁定版本依赖

Pom工程的父项目定义的依赖 <dependencyManagement><dependencies><!--springcloud 2023.0.0--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version&g…

Coze(扣子)+ Deepseek:多Agents智能体协作开发新范式

前言 在当今数字化浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;技术的迅猛发展正深刻改变着我们的生活和工作方式。从智能语音助手到自动化流程机器人&#xff0c;AI 的应用无处不在&#xff0c;为我们提供了更加便捷、高效的服务。然而&#xff0c;对于非专业人士来…

【文献讲解】《Non-local Neural Networks》

一、引言 传统的深度学习方法(如卷积神经网络CNN和循环神经网络RNN)在捕捉长距离依赖关系时存在局限性。CNN主要关注局部邻域的特征,而RNN则依赖于序列的递归计算,无法直接捕捉全局信息。为了解决这一问题,本文提出了一种非局部神经网络(Non-local Neural Networks),通…

BiGRU双向门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据)

代码地址&#xff1a;BiGRU双向门控循环单元多变量多步预测&#xff0c;光伏功率预测&#xff08;Matlab完整源码和数据) BiGRU双向门控循环单元多变量多步预测&#xff0c;光伏功率预测 一、引言 1.1、研究背景和意义 随着全球对可再生能源需求的不断增长&#xff0c;光伏…

经典题型:求数组中逆序对的数量

经典题型&#xff1a;求数组中逆序对的数量 题目思路代码 题目 链接 思路 步骤一&#xff1a;两个指针指向两个有序区间&#xff0c;进行合并操作。 步骤二&#xff1a;1与前面的区间&#xff0c;构成逆序对&#xff0c;个数就是前面区间的个数。 步骤三&#xff1a;前面数组…

ASP.NET Core 如何使用 C# 向端点发出 POST 请求

使用 C#&#xff0c;将 JSON POST 到 REST API 端点&#xff1b;如何从 REST API 接收 JSON 数据。 本文需要 ASP .NET Core&#xff0c;并兼容 .NET Core 3.1、.NET 6和.NET 8。 要从端点获取数据&#xff0c;请参阅本文。 使用 . 将 JSON 数据发布到端点非常容易HttpClien…

Flink CDC YAML:面向数据集成的 API 设计

摘要&#xff1a;本文整理自阿里云智能集团 、Flink PMC Member & Committer 徐榜江&#xff08;雪尽&#xff09;老师在 Flink Forward Asia 2024 数据集成&#xff08;一&#xff09;专场中的分享。主要分为以下四个方面&#xff1a; Flink CDC YAML API Transform A…

清理软件——软媒清理大师

随着电脑使用时间的增加&#xff0c;系统垃圾文件也会不断累积&#xff0c;导致C盘空间逐渐变得紧张。今天&#xff0c;我为大家推荐一款专业的清理软件——软媒清理大师&#xff0c;它能够高效地清理电脑中的无用垃圾文件&#xff0c;为您的电脑“减负”。 清理软件——软媒清…

【C++八股】 前置 ++i vs. 后置 i++ 的区别

在 C 中&#xff0c; 运算符有前置 i 和后置 i 两种方式&#xff0c;它们都能让变量自增 1&#xff0c;但在执行顺序、性能、应用场景上有所不同。 1. i vs. i 对比表 2. 代码示例 #include <iostream> int main() {int a 5, b 5;std::cout << "a "…

手动配置IP

手动配置IP&#xff0c;需要考虑四个配置项&#xff1a; 四个配置项 IP地址、子网掩码、默认网关、DNS服务器 IP地址&#xff1a;格式表现为点分十进制&#xff0c;如192.168.254.1 子网掩码&#xff1a;用于区分网络位和主机位 【子网掩码的二进制表达式一定是连续的&#…

PyTorch快速入门

Anaconda Anaconda 是一款面向科学计算的开源 Python 发行版本&#xff0c;它集成了众多科学计算所需的库、工具和环境管理系统&#xff0c;旨在简化包管理和部署&#xff0c;提升开发与研究效率。 核心组件&#xff1a; Conda&#xff1a;这是 Anaconda 自带的包和环境管理…

解决 Sentinel 控制台无法显示 OpenFeign 资源的问题

前言 在使用 Spring Cloud Alibaba Sentinel 进行微服务治理时&#xff0c;可能会遇到 Sentinel 控制台无法显示 OpenFeign 资源的问题。本文将详细分析问题的原因&#xff0c;并提供解决方案。 一、问题描述 在 Sentinel 控制台 1.8.8 版本中&#xff0c;簇点链路&#xff…

(done) openMP学习 (Day14: 总结)

url: https://dazuozcy.github.io/posts/introdution-to-openmp-intel/#23-%E5%8F%AF%E6%80%95%E7%9A%84%E4%B8%9C%E8%A5%BF%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8Batomicsflushpairwise%E5%90%8C%E6%AD%A5%20 新手并行程序员与专家并行程序员之间的区别是专家have a collection…

深度求索与DeepSeek-R1:探索人工智能的新纪元

深度求索与DeepSeek-R1&#xff1a;探索人工智能的新纪元 引言 在当今快速发展的科技领域&#xff0c;尤其是人工智能&#xff08;AI&#xff09;方面&#xff0c;每隔一段时间就会出现一款革命性的产品或技术&#xff0c;彻底改变我们对这一领域的认知。2025年初&#xff0c…

pytest-xdist 进行多进程并发测试

在自动化测试中&#xff0c;运行时间过长往往是令人头疼的问题。你是否遇到过执行 Pytest 测试用例时&#xff0c;整个测试流程缓慢得让人抓狂&#xff1f;别担心&#xff0c;pytest-xdist 正是解决这一问题的利器&#xff01;它支持多进程并发执行&#xff0c;能够显著加快测试…

车载诊断工具技巧 --- CAPL Debug 功能使用介绍

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

windows蓝牙驱动开发-调试及支持的HCI和事件

调试蓝牙配置文件驱动程序 开发蓝牙配置文件驱动程序时&#xff0c;可以使用驱动程序验证程序来协助其调试。 若要启用验证检查&#xff0c;必须为 Bthusb.sys 启用驱动程序验证程序。 如果不执行此操作&#xff0c;将禁用验证检查。 若要完全利用验证检查&#xff0c;请确保…