区块链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群运算的可交换性

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从“听指令”到“会思考”:工业机器人的人工智能融合之旅

随着人工智能技术的快速发展&#xff0c;工业机器人系统正在逐步与AI进行深度融合&#xff0c;进而提升其自动化程度和智能化水平。从技术实现和工业应用的角度来看&#xff0c;AI与机器人系统的集成方式可以分为四个层次&#xff0c;按照集成程度由低到高进行排序。以下是四种…

【多模态大模型】系列2:如何用多GPU训练一个非常大的模型(数据/模型/流水线/张量并行、MoE、混合精度训练、压缩、激活重新计算)

目录 1 训练并行1.1 数据并行&#xff08;Data Parallelism&#xff09;1.2 模型并行&#xff08;Model Parallelism&#xff09;1.3 流水线并行&#xff08;Pipeline Parallelism&#xff09;1.4 张量并行&#xff08;Tensor Parallelism&#xff09; 2 混合专家&#xff08;M…

活动预告 | Power Hour: Copilot 引领商业应用的未来

课程介绍 智能化时代&#xff0c;商业应用如何实现突破&#xff1f;微软全球副总裁 Charles Lamanna 将为您深度解析&#xff0c;剖析其中关键因素。 在本次线上研讨会中&#xff0c;Charles Lamanna 将分享他在增强商业运营方面的独到见解与实战策略&#xff0c;深度解读商业…

神经网络常见激活函数 6-RReLU函数

文章目录 RReLU函数导函数函数和导函数图像优缺点pytorch中的RReLU函数tensorflow 中的RReLU函数 RReLU 随机修正线性单元&#xff1a;Randomized Leaky ReLU 函数导函数 RReLU函数 R R e L U { x x ≥ 0 a x x < 0 \rm RReLU \left\{ \begin{array}{} x \quad x \ge 0…

java基础5(黑马)

一、面向对象基础 1.面相对象编程快速入门 计算机是用来处理数据的。 单个变量 数组变量 对象数据 Student类&#xff1a; package cn.chang.object;public class Student {String name; double chinese_score; double math_score; public void printTotalScor…

C++ 继承(1)

1.继承概念 我们平时有时候在写多个有内容重复的类的时候会很麻烦 比如我要写Student Teacher Staff 这三个类 里面都要包含 sex name age成员变量 唯一不同的可能有一个成员变量 但是这三个成员变量我要写三遍 太麻烦了 有没有好的方式呢&#xff1f; 有的 就是继承…

C++入门基础篇:内存管理

本文是C内存管理部分的学习分享 希望能够对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 1. 内存分布 1.1 引入 在开始之前&#xff0c;我们先来看一道题目&#xff1a; int globalVar 1; static int staticGlobalVar 1; void Test() {static int st…

DeepSeek开源多模态大模型Janus-Pro部署

DeepSeek多模态大模型部署 请自行根据电脑配置选择合适环境配置安装conda以及gitJanus 项目以及依赖安装运行cpu运行gpu运行 进入ui界面 请自行根据电脑配置选择合适 本人家用电脑为1060&#xff0c;因此部署的7B模型。配置高的可以考虑更大参数的模型。 环境配置 安装conda…

Chrome谷歌多开教程:实用方法与工具

不管是电子商务、技术测试、空投等不同专业领域&#xff0c;还是个人的工作和生活账号管理&#xff0c;使用不同的独立账户往往需要借助Chrome谷歌浏览器多开来提高效率。Chrome谷歌多开有哪些方法和工具&#xff1f;可以来参考以下实用内容。 一、Chrome谷歌多开方法与工具 1…

Hdoop之MapReduce的原理

简单版本 AppMaster: 整个Job任务的核心协调工具 MapTask: 主要用于Map任务的执行 ReduceTask: 主要用于Reduce任务的执行 一个任务提交Job --> AppMaster(项目经理)--> 根据切片的数量统计出需要多少个MapTask任务 --> 向ResourceManager(Yarn平台的老大)索要资源 --…

Palatir和它的AIP

Palantir是一家成立于2001年的美国大数据分析公司&#xff0c;由彼得Thiel创立&#xff0c;最初专注于反恐数据分析&#xff0c;后来逐步扩展到政府、金融、医疗等多个领域。其核心产品包括Gotham&#xff08;面向政府&#xff09;、Foundry&#xff08;面向商业&#xff09;、…

html 列动态布局

样式说明&#xff1a; /* 列动态布局&#xff0c;列之间以空格填充 */ li {display: flex;/* flex-direction: column; */justify-content: space-between; }

【C++高并发服务器WebServer】-13:多线程服务器开发

本文目录 一、多线程服务器开发二、TCP状态转换三、端口复用 一、多线程服务器开发 服务端代码如下。 #include <stdio.h> #include <arpa/inet.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <pthread.h>s…

活动预告 | 为 AI 新纪元做好准备:助力安全的业务转型

课程介绍 随着现代办公模式的不断演变和 AI 技术的迅速发展&#xff0c;企业在享受效率提升的同时&#xff0c;也面临着信息安全与数据保护的严峻挑战。在利用 AI 技术释放业务潜力的同时&#xff0c;如何确保数据质量与安全已成为企业发展的关键议题。 在本次线上课程中&…

鸿蒙harmony 手势密码

1.效果图 2.设置手势页面代码 /*** 手势密码设置页面*/ Entry Component struct SettingGesturePage {/*** PatternLock组件控制器*/private patternLockController: PatternLockController new PatternLockController()/*** 用来保存提示文本信息*/State message: string …

紧跟潮流,将 DeepSeek 集成到 VSCode

Visual Studio Code&#xff08;简称 VSCode&#xff09;是一款由微软开发的免费开源代码编辑器&#xff0c;自 2015 年发布以来&#xff0c;凭借其轻便、强大、且拥有丰富扩展生态的特点&#xff0c;迅速成为了全球开发者的首选工具。VSCode 支持多平台操作系统&#xff0c;包…

21.2.6 字体和边框

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 通过设置Rang.Font对象的几个成员就可以修改字体&#xff0c;设置Range.Borders就可以修改边框样式。 【例 21.6】【项目&#xff…

Windows下AMD显卡在本地运行大语言模型(deepseek-r1)

Windows下AMD显卡在本地运行大语言模型 本人电脑配置第一步先在官网确认自己的 AMD 显卡是否支持 ROCm下载Ollama安装程序模型下载位置更改下载 ROCmLibs先确认自己显卡的gfx型号下载解压 替换替换rocblas.dll替换library文件夹下的所有 重启Ollama下载模型运行效果 本人电脑配…

node.js + html + Sealos容器云 搭建简易多人实时聊天室demo 带源码

node.js html Sealos容器云 搭建简易多人实时聊天室demo 带源码 前言功能介绍&#xff08;demo演示&#xff09;sealos官网配置node.js 编写服务端代码前端ui 调用接口整体项目目录部署到服务器 前言 hello哦盆友们&#xff0c;这次我们来十几行代码做一个超简单的多人聊天…

MYSQL索引与视图

一、新建数据库 mysql> create database mydb15_indexstu; mysql> use mydb15_indexstu; 二、新建表 &#xff08;1&#xff09;学生表Student mysql> create table Student(-> Sno int primary key auto_increment,-> Sname varchar(30) not null unique,-…