安全多方计算之五:零知识证明(从入门到入土。。)

news2024/5/18 11:42:09

零知识证明

  • 1. 简介
  • 2. 零知识证明的例子
    • 2.1 向红绿色盲证明红球、绿球
    • 2.2 数独的零知识证明
    • 2.3 三染色问题的零知识证明
    • 2.4 Quisquater-Guillou 零知识协议
  • 3. ElGamal加密的零知识证明
    • 3.1 ElGamal加密的已知明文证明
    • 3.2 ElGamal加密的二选一零知识证明
    • 3.3 ElGamal加密的1-out-of-N零知识证明
  • 4. 身份的零知识证明
    • 4.1 Fiat-Shamir 身份识别协议

1. 简介

零知识证明(Zero Knowledge Proof)由S.Goldwasser、S.Micali 及 C.Rackoff于1985年在论文《The Knowledge Complexity of Interactive Proof Systems》(交互式证明系统中的知识复杂性)首次提出,是一种用于证明者在不泄露任何其他信息的情况下证明其掌握知识正确性的密码学协议。

该协议的一方称为证明者(Prover),用 P P P表示;另一方称为验证者(Verifier),用 V V V表示。零知识证明指 P P P试图使 V V V相信某个论断是正确的,但却不向 V V V泄露任何有用的信息,即 P P P在论证的过程中 V V V得不到任何有用的信息。零知识证明除了证明证明者论断的正确性外不泄露任何其他信息或知识。

零知识证明一般包含以下阶段:

  • 承诺(Commit):证明者针对命题做出承诺,该承诺等待验证者提出挑战并进行验证。

  • 挑战(Challenge):验证者选择随机数(即上述例子中的行、列或格)对提出的承诺进行挑战。

  • 回应挑战(Response):证明者将收到的随机数结合给出的承诺(承诺不可修改),返回挑战的回应。

  • 验证(Verify):验证者验证挑战的回应是否正确,如果错误,则证明失败。

证明者与验证者重复执行以上步骤,直到可以相信的概率达到验证者接受的条件,证明成功。

零知识证明具有以下特点:

  • 完备性(Completeness):如果证明者和验证者都是诚实的,并遵守证明过程的每一步进行正确的计算,则该证明一定会成功,验证者也一定能够接受证明者;
  • 合理性(Soundness):没有人能够假冒证明者,从而使这个证明成功;
  • 零知识性(Zero-Knowledge):证明过程执行完后,验证者只会得悉"证明者拥有这项知识",而没有获得关于这项知识本身的任何信息。

零知识证明与比特承诺都要求协议参与者对某种知识或某个声明做出证明或承诺,但不泄露该知识或承诺的任何信息。不同的是比特承诺需要在打开阶段揭示承诺,但零知识证明在证明过程结束后仍不会泄露掌握的知识。比特承诺一般用于在电子拍卖或电子投票中参与者对自己的投票或选票做出承诺;而在协议执行过程中,为了抵抗恶意参与者或主动攻击者,需要协议参与者通过零知识证明来证明自己所作操作都是按照协议正确执行的。

2. 零知识证明的例子

2.1 向红绿色盲证明红球、绿球

有两颗形状、大小完全一样的球:一颗红球、一颗绿球, X X X是红绿色盲, Y Y Y能够向 X X X证明这两颗球是一红一绿吗?

  • X X X左手拿着红球,右手拿着绿球,并在背后不让 Y Y Y看到,进行交换(或者不交换)两只球
  • Y Y Y能够根据颜色精准判断 X X X是否进行了交换
  • 执行上述操作 N N N次后,即能在 X X X是色盲的情况下, Y Y Y仍能够向 X X X证明能这两颗球是一红一绿

2.2 数独的零知识证明

数独(Sudoku)规则如下:

9 × 9 9\times 9 9×9方格,其中已经填入部分数字,要求玩家在空白方格中填入数字 1 − 9 1-9 19,使得完成后的每行、每列及 9 9 9 3 × 3 3\times3 3×3方格都包含数字 1 − 9 1-9 19且每个数字只出现一次

在这里插入图片描述
假设 P P P给出一道数独题目,由 V V V来完成,但 V V V过了很久都未能解出,他怀疑该数独题目没有解,要求 P P P证明该题目有解。因此 P P P希望在不告诉 V V V答案相关的任何信息的情况下证明这道题有解且自己知道这个解。

P P P V V V执行以下操作:

(1)承诺

P P P将答案的每个数字写在纸片上,并按照答案摆放(正面朝下),题目中已有的数字正面朝上,这81个纸片的放置为 P P P的“承诺”。
在这里插入图片描述
(2)挑战

V V V不能直接将纸片翻转查看数字,但是 V V V可以在行、列、格中任意指定一种验证方式。如图所示, V V V选择按照行的方式进行挑战。
在这里插入图片描述

(3)挑战回应

P P P按照 V V V选择行验证方式将桌面上每行的 9 9 9张卡片装入一个袋子里,并且将纸片进行混淆后,把袋子交给 V V V,作为挑战的回应。

(4)验证

V V V打开纸袋可验证每个纸袋里的 9 9 9张纸片刚好为 1 − 9 1-9 19,即 P P P在承诺阶段做出的承诺满足“每行 1 − 9 1-9 19都出现且只出现一次”的要求,同时在一定程度上说明 P P P做出的承诺很可能是一个合法的解(因为随意给出的数字不会满足这一要求,并且在承诺的时候并不知道 V V V会选择行、列、格哪种验证方式)。
在这里插入图片描述
由于存在 1 / 3 1/3 1/3的概率 P P P事先猜对 V V V选择行验证,然后给出的承诺仅满足行要求,不满足列要求和格要求。或者 P P P拥有满足两项要求,但是不满足第三项要求的错误答案,此时猜对的概率为 2 / 3 2/3 2/3

P P P为了向 V V V证明自己知道该数独的解,会和 V V V重复该方案的承诺、挑战、回应挑战和验证,允许 V V V在挑战阶段任意选择验证方式,如果出现任何一次验证错误则表示证明失败。

假设进行的 n n n次过程都验证成功,那么 P P P在不知道数独答案的条件下单次验证成功的概率最大为 2 / 3 2/3 2/3(考虑 P P P 满足两项要求,但是不满足第三项要求的错误答案),所有验证都成功的概率为 ( 2 3 ) n (\frac{2}{3})^n (32)n随着 n n n的增大,这一概率趋近于 0 0 0,而 P P P拥有正确答案的概率趋近于 1 1 1,表明 V V V 可以以大概率相信 P P P 拥有正确答案。

2.3 三染色问题的零知识证明

地图三染色问题:如何用三种颜色染色一个地图,保证任意两个相邻的地区都是不同的颜色。

该问题可转变成连通图的顶点三染色问题,即不同城市(节点)之间修建了一些道路(边),是否存在一种染色方式,使得每个城市都用特定的三种颜色之一表示,并且任意有道路相连的两个城市都不是相同颜色。

如图所示,证明者Alice拥有一个特地地图三染色的方案,希望在不泄漏任何信息的条件下向Bob证明自己拥有该方案。

在这里插入图片描述
(1)承诺

Alice将染色方案进行置换(蓝色->绿色,绿色->橙色,橙色->蓝色),然后将每个节点装入一个信封里,放在桌子上出示给Bob。

在这里插入图片描述
(2)挑战

Bob可以选择任意一条连边,要求Alice打开相邻两个节点的信封进行验证。

在这里插入图片描述
(3)回应挑战

Alice打开Bob指定的两个节点,作为对挑战的回应。
在这里插入图片描述

(4)验证

Bob验证结果:两节点颜色不同

重复以上过程
在这里插入图片描述

当重复交互很多次之后,Bob 得到了大量的信息,但没有得到关于染色方案的任何知识,却能够相信Alice拥有该方案。

2.4 Quisquater-Guillou 零知识协议

1990年,LouisC.Guillou 和 Jean-Jacques Quisquater 提出一种形象的基本零知证明协议的例子,该图表示一个迷宫, C C C D D D之间有一道门,需知道秘密咒语才能打开。现在,证明者 P P P希望向验证者 V V V证明他拥有这道门的秘密语,但是 P P P不愿意向 V V V泄露该咒语。 P P P采用“分割与选择”(Cut-and-Choose)技术实现这一零知识协议。

在这里插入图片描述

  • (1)验证者 V V V开始停留在位置 A A A
  • (2)证明者 P P P一直走到迷宫的深处,随机选择到位置 C C C或位置 D D D
  • (3) V V V看不到 P P P后,走到位置 B B B,然后命令 P P P从某个出口返回 B B B;
  • (4) P P P服从 V V V的命令,要么原路返回至位置 B B B,要么使用秘密咒语打开门后到达位置 B B B

上述协议中,若 P P P不知道秘密咒语,就只能原路返回,而 P P P第一次猜对 V V V要求他一条路径的概率为 0.5 0.5 0.5,第一轮协议 P P P能够欺骗 V V V的概率为 0.5 0.5 0.5

P P P V V V重复上述步骤 n n n次, P P P成功欺骗 V V V的概率为 1 / 2 n 1/2^n 1/2n。假定 n = 20 n=20 n=20,则 P P P成功欺骗 V V V的概率为 1 / 104857 1/104857 1/104857,如果 P P P能够 20 20 20 次按 V V V的要求返回, V V V即证明 P P P确实知道秘密咒语。同时, V V V无法从上证明过程中获取任何关于 P P P的秘密咒语的信息。

在这里插入图片描述

3. ElGamal加密的零知识证明

3.1 ElGamal加密的已知明文证明

对于 ElGamal加密方案的密文 E ( M ) = ( α , β ) = ( g r , y r M ) E(M)=(\alpha, \beta)=\left(g^{r}, y^{r} M\right) E(M)=(α,β)=(gr,yrM) , 如果一个参与者知道了 r r r, 则可非常方便地利用零知识证明来证明自己知道密文 ( α , β ) (\alpha, \beta) (α,β) 所对应的明文 M , 这就是已知明文证明。

Schonorr提出参与者能够使用零知识证明的方法俩证明他知道一个 r r r 使得 α = g r \alpha=g^{r} α=gr 成立, 方法如下:

  • 步骤1: Alice 选择随机数 z z z 发送 a ′ = g z a^{\prime}=g^{z} a=gz 至 Bob。
  • 步骤2: Bob 选择随机数 c c c 发送至 Alice。
  • 步骤3: Alice 发送 k = ( z + c r )   m o d   q k=(z+c r) \bmod q k=(z+cr)modq 至 Bob。
  • 步骤4: Bob 验证 g k = a ′ α c g^{k}=a^{\prime} \alpha^{c} gk=aαc

3.2 ElGamal加密的二选一零知识证明

Cramer 提出, Alice 对消息 M M M 的 ElGamal 加密 ( α , β ) = ( g r   m o d   p , y r M   m o d   p ) (\alpha, \beta)=\left(g^{r} \bmod p, y^{r} M \bmod p\right) (α,β)=(grmodp,yrMmodp)在不泄露 M M M 的前提下, 可以向其他人证明 M = 7 M=7 M=7 M = Z M=Z M=Z, 步骤如下:

步骤 1 :

  • M = 1 M=1 M=1 , Alice 选择随机数 r 1 , d 1 , w r_{1}, d_{1}, w r1,d1,w , 发送 ( α , β ) , a 1 = g r 1 α d 1 , b 1 = y r 1 ( β z ) d 1 , a 2 = g w , b 2 = y w (\alpha, \beta), a_{1}=g^{r_1} \alpha^{d_{1}}, b_{1}= y^{r_{1}}\left(\frac{\beta}{z}\right)^{d_{1}}, a_{2}=g^{w}, b_{2}=y^{w} (α,β),a1=gr1αd1,b1=yr1(zβ)d1,a2=gw,b2=yw至 Bob;

  • M = Z M=Z M=Z , Alice 选择随机数 $r_{2}, d_{2}, w , 发送 , 发送 ,发送 ( α , β ) , a 1 = g w , b 1 = y w , a 2 = g r 2 α d 2 , b 2 = y r 2 β d 2 (\alpha, \beta), a_{1}= g^{w}, b_{1}=y^{w}, a_{2}=g^{r_{2}} \alpha^{d_{2}}, b_{2}=y^{r_{2}} \beta^{d_{2}} (α,β),a1=gw,b1=yw,a2=gr2αd2,b2=yr2βd2$至 Bob。

步骤 2: Bob 发送随机数 c c c 至 Alice。

步骤 3:

  • M = 1 M=1 M=1 , Alice 发送 d 1 , d 2 = ( c − d 1 )   m o d   p , r 1 , r 2 = ( w − r d 2 )   m o d   p d_{1}, d_{2}=\left(c-d_{1}\right) \bmod p, r_{1}, r_{2}=\left(w-r d_{2}\right) \bmod p d1,d2=(cd1)modp,r1,r2=(wrd2)modp至 Bob;

  • M = Z M=Z M=Z , Alice 发送 d 1 = ( c − d 2 )   m o d   p , d 2 , r 1 = ( w − r d 1 )   m o d   p , r 2 d_{1}=\left(c-d_{2}\right) \bmod p, d_{2}, r_{1=}\left(w-r d_{1}\right) \bmod p, r_{2} d1=(cd2)modp,d2,r1=(wrd1)modp,r2 至 Bob。

步骤 4: Bob 验证 c = ( d 1 + d 2 )   m o d   p , a 1 = g r 1 α d 1 , b 1 = y r 1 ( β z ) d 1 , a 2 = g r 2 α d 2 , b 2 = y r 2 β d 2 c=(d_{1}+d_{2})\bmod p, a_{1}=g^{r_{1}} \alpha^{d_{1}}, b_{1}=y^{r_{1}}\left(\frac{\beta}{z}\right)^{d_{1}}, a_{2}=g^{r_{2}} \alpha^{d_{2}}, b_{2}= y^{r_{2}} \beta^{d_{2}} c=(d1+d2)modp,a1=gr1αd1,b1=yr1(zβ)d1,a2=gr2αd2,b2=yr2βd2

3.3 ElGamal加密的1-out-of-N零知识证明

Alice 对消息 m m m 的 ElGamal 加密 ( α , β ) = ( g r   m o d   p , y r m   m o d   p ) (\alpha, \beta)=\left(g^{r} \bmod p, y^{r} m \bmod p\right) (α,β)=(grmodp,yrmmodp)

M = ( m 1 , m 2 , … , m N ) M= \left(m_{1}, m_{2}, \ldots, m_{N}\right) M=(m1,m2,,mN) 为明文集合 。 m = m t , t ∈ [ 1 , N ] m=m_{t}, t \in[1, N] m=mt,t[1,N],可以在不泄露 m m m的情况下, 证明 m ∈ M m \in M mM

假设 M M M 对应的其 ElGamal 加密的密文集合为 ( ( α 1 , β 1 ) , ( α 2 , β 2 ) , … , ( α N ′ β N ) ) \left(\left(\alpha_{1}, \beta_{1}\right),\left(\alpha_{2}, \beta_{2}\right), \ldots,\left(\alpha_{N^{\prime}} \beta_{N}\right)\right) ((α1,β1),(α2,β2),,(αNβN))其中 ( α i ′ β i ) = ( g k i   m o d   p , y k i m i   m o d   p ) \left(\alpha_{i^{\prime}} \beta_{i}\right)= \left(g^{k_{i}} \bmod p, y^{k_{i}} m_{i} \bmod p\right) (αiβi)=(gkimodp,ykimimodp)

步骤 1:

Alice 选择随机数 d 1 , d 2 , … , d N , r 1 , r 2 , … , r N d_{1}, d_{2}, \ldots, d_{N}, r_{1}, r_{2}, \ldots, r_{N} d1,d2,,dN,r1,r2,,rN , 计算
a i = ( α i α ) d i ⋅ g r i , b i = ( β i β ) d i ⋅ y r i , i = 1 , … , N , i ≠ t . a_{i}=\left(\frac{\alpha_{i}}{\alpha}\right)^{d_{i}} \cdot g^{r_{i}}, \quad b_{i}=\left(\frac{\beta_{i}}{\beta}\right)^{d_{i}} \cdot y^{r_{i}}, \quad i=1, \ldots, N,i \neq t . ai=(ααi)digri,bi=(ββi)diyri,i=1,,N,i=t.

a t = g w , b t = y w a_{t}=g^{w}, b_{t}=y^{w} at=gw,bt=yw, 其中 w = ( k t − r ) d t + r t w=\left(k_{t}-r\right) d_{t}+r_{t} w=(ktr)dt+rt,并将 ( a i b i ) , i = 1 , … , N \left(a_{i} b_{i}\right), i=1, \ldots, N (aibi),i=1,,N发送至 Bob。

步骤 2: Bob 发送随机数 c c c 至 Alice。

步骤 3: Alice 修改 d t d_{t} dt r t r_{t} rt , 使得 c = ∑ i = 1 N d i , w = ( k t − r ) d t + r t c=\sum_{i=1}^{N} d_{i}, w=\left(k_{t}-r\right) d_{t}+r_{t} c=i=1Ndi,w=(ktr)dt+rt

然后将 d 1 , d 2 , … , d N , r 1 , r 2 , … , r N d_{1}, d_{2}, \ldots, d_{N}, r_{1}, r_{2}, \ldots, r_{N} d1,d2,,dN,r1,r2,,rN 发送至 Bob。

步骤 4: Bob 验证 c = ∑ i = 1 N d i , a i = ( α i α ) d i ⋅ g r i , b i = ( β i β ) d i ⋅ y r i , i = 1 , … , N c=\sum_{i=1}^{N} d_{i}, \quad a_{i}=\left(\frac{\alpha_{i}}{\alpha}\right)^{d_{i}} \cdot g^{r_{i}}, \quad b_{i}=\left(\frac{\beta_{i}}{\beta}\right)^{d_{i}} \cdot y^{r_{i}}, \quad i= 1, \ldots, N c=i=1Ndi,ai=(ααi)digri,bi=(ββi)diyri,i=1,,N

4. 身份的零知识证明

一个安全的身份识别协议至少应满足以下两个条件:

  • 证明者 P P P能够向验证者 V V V证明他的确是 P P P;
  • 在证明者 P P P向验证者 V V V证明他的身份后,验证者 V V V不能获得关于 P P P的任何有用信息,使得 V V V不能冒充 P P P向第三方证明 V V V P P P

也就是说, P P P既能向 V V V证明他的身份,又没有向 V V V泄露 P P P的识别信息,即安全的身份识别协议应满足零知识性和认证性。

4.1 Fiat-Shamir 身份识别协议

1986 年,A. Fiat与A. Shamir 提出了一种基于二次剩余根的身份识别协议,即Fiat-Shamir 身份识别协议。

1988 年,U.Feige、A.Fiat和 A.Shamir 把 Fiat-Shamir 身份识别协议改进为零知识证明的身份识别协议,即Feige-Fiat-Shamir身份识别协议,简称 F.F.S协议。该协议把“分割与选择”和“挑战与应答”的思想结合起来,其目的是证明者 P P P向验证者 V V V证明他的身份,且事后 V V V不能冒充 P P P

协议描述

假定存在一个可信任的中心TA,该中心的唯一任务是选择形式为 4 r + 3 4r+3 4r+3的两个大素数 p 、 q p、q pq,使得 n = p × q n = p \times q n=p×q是难分解的,然后向其他人公布 n n n( n n n为Blum 数)。TA任务完成后可被关闭或取消,因为它不再有其他的任务,但该中心不能泄露 p 、 q p、q pq的信息。

证明者 P P P的秘密身份由 k k k个数 x 1 , . . . , x i , . . . , x k x_1,...,x_i,...,x_k x1,...,xi,...,xk表示,其中 1 ≤ x i < n , i = 1 , 2 , . . . , k 1 \le x_i<n,i=1,2,...,k 1xi<n,i=1,2,...,k P P P的公开身份由其他 k k k个数 y 1 , . . . , y i , . . . , y k y_1,...,y_i,...,y_k y1,...,yi,...,yk来表示,其中 y i y_i yi也满足 1 ≤ y i < n , i = 1 , 2 , . . . , k 1 \le y_i<n,i=1,2,...,k 1yi<n,i=1,2,...,k x i x_i xi y y y满足: y i x i 2   m o d   n , i = 1 , 2 , . . . , k y_ix_i^2 \bmod n, i= 1,2,...,k yixi2modn,i=1,2,...,k初始状态下验证者 V V V知道TA公布的Blum数 n n n和证明者P的公开身份 y 1 , . . . , y i , . . . , y k y_1,...,y_i,...,y_k y1,...,yi,...,yk,现在 P P P希望向 V V V证明他知道他自己的秘密身份。协议执行的步骤如下:

  • P P P随机选择一个整数 a a a,计算 r ≡ ± a 2   m o d   n r \equiv \pm a^2 \bmod n r±a2modn并把其中一个值发送给 V V V;

  • V V V 1 , 2 , … , k {1,2,…,k} 1,2,,k中选择一子集 e = { e 1 , e 2 , . . . , e j } e=\{e_1,e_2,...,e_j\} e={e1,e2,...,ej},然后将 e e e交给 P P P;

  • P P P计算出 T x ≡ ∏ i = 1 j x e i   m o d   n T_x \equiv \prod_{i=1}^{j} x_{e_i} \bmod n Txi=1jxeimodn,并将 b ≡ a T x   m o d   n b \equiv aT_x \bmod n baTxmodn交给 V V V;

  • V V V计算出 T y ≡ ∏ i = 1 j y e i   m o d   n T_y \equiv \prod_{i=1}^{j} y_{e_i} \bmod n Tyi=1jyeimodn,并验证 r ≡ ± b 2 T y   m o d   n r \equiv \pm b^2 T_y \bmod n r±b2Tymodn 是否成立;

若验证通过,则重复执行上述步骤;否则拒绝。

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

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

相关文章

MATLAB - 查找数据峰值

语法如下&#xff1a; pks findpeaks(data) [pks,locs] findpeaks(data) [pks,locs,w,p] findpeaks(data) [___] findpeaks(data,x) [___] findpeaks(data,Fs) [___] findpeaks(___,Name,Value) findpeaks(___)where&#xff0c;pks是峰值返回值&#xff0c;locs是数据索…

特斯拉 FSD 背后的技术(1)—从 BEV 到占用网络

在今年 tesla 的 AI Day 给我这个业余自动驾驶爱好者给留下了深刻印象&#xff0c;在看过之后&#xff0c;通过收集资料对其中阐述的技术进行简单的了解&#xff0c;在这里拿出来跟大家分享一下&#xff0c;有点长&#xff0c;所以划分了一下 3 个部分。从 BEV 到占用网络激进无…

chrome查看网页性能

1 Performance 1.1 打开开发者工具&#xff08;cmdshiftc&#xff09; 1.2 打开Performance面板&#xff0c;点击录制按钮&#xff08;开始录制&#xff09; 1.3 刷新页面&#xff0c;再次点击录制按钮&#xff08;结束录制&#xff09; 录制按钮高亮&#xff0c;表示录制中…

算法训练营DAY47|198.打家劫舍、213.打家劫舍II 、337.打家劫舍III

这一期到了打家劫舍的专题&#xff0c;说是专题但实际上只有一期&#xff0c;而且只有三道题&#xff0c;我们把这三道题放在一起讲&#xff0c;第一道题简单一些&#xff0c;后两道略有不同方向上的难度。但总体来看第一次做可能有一点难想到思路&#xff0c;其实代码实现还是…

百度、字节终于不再相互“抄袭”

文|智能相对论作者|佘凯文“百度和字节跳动&#xff0c;分道扬镳”乍一看挺标题党的&#xff0c;这两个互联网巨头从没在一起过&#xff0c;又何来“分道扬镳”之说&#xff1f;不急&#xff0c;且往下看。众所周知&#xff0c;当前国内互联网行业&#xff0c;早已不是当初啥也…

【链表->环形链表】

诸如环形链表的结构有&#xff1a;尾节点链接向各个节点的链表&#xff0c;也可链向自己&#xff0c;称为环形链表。只要链表中带有环&#xff0c;均可称为环形链表。下面通过一些例题来详细讲述环形链表&#xff1a;1.给你一个链表的头节点 head &#xff0c;判断链表中是否有…

python进阶——人工智能实时目标跟踪

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a;lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/lbcyllqj?spm1000.2115.3001.5343 哔哩哔哩欢迎关注&…

Apollo planning之参考线平滑算法

Apollo studio 官网&#xff1a;Apollo开发者社区 (baidu.com) 目录 1 参考线的作用 2 参考线的数据结构 2.1 ReferenceLine的数据结构 2.2 ReferencePoint的数据结构 3 参考线处理流程 ​4 参考线平滑算法 4.1 算法分类 4.2 参考线平滑算法流程 4.2.1 AnchorPoint …

Learning C++ No.1

引言&#xff1a; 北京时间 2023/2/1/20:38&#xff0c;三天没写博客&#xff0c;打字量严重下滑&#xff0c;这两天是看剧时间&#xff0c;我发现看电视剧有时候还是非常的让人无法自拔的&#xff0c;一天追完一部30集的电视剧&#xff0c;我还是很佩服我自己的&#xff0c;现…

我愿称之为天花板的【Python自动化测试开发文档】—自动化测试开发平台实战

我愿称之为天花板的【Python自动化测试开发文档】—自动化测试开发平台实战 目录&#xff1a;导读 本文以下内容均适合这类人群 包含的模块&#xff1a; 第一章&#xff1a;Python 零基础入门 第二章&#xff1a; Web 应用框架 第三章&#xff1a;自动化平台开发 第四章…

React的学习笔记-(Bilibili天禹老师)

React的特点 采用组件化模式,声明式编码,提高开发效率和组件复用率在React Native中可以使用React语法进行移动端开发(IOS和Android)使用虚拟DOM优秀的Diffing算法,尽量减少与真实DOM的交互 babel用处 es6 > es5jsx > js 1.你好,react 注意引入顺序 <!DOCTYPE h…

图扑软件 | 虚拟电厂负荷控制系统可视化

前言 随着国家“双碳”及“构建以新能源为主体的新型电力系统”等目标的提出&#xff0c;清洁化、数字化越来越成为电力系统面临的迫切需求&#xff0c;负控系统的发展对电力营销现代化建设具有重要的意义。 负控管理系统是一个着眼于全面加强电力信息管理的&#xff0c;集负…

Query 聚类

为了提高阅读体验&#xff0c;请移步到&#xff1a;Query 聚类背景搜索系统优化长尾 query。想了解一下长尾 query 长什么样&#xff1f;大体上都有几类&#xff1f;最好能归类&#xff0c;一类一类处理。Query 数据源&#xff1a;包含“什么”&#xff0c;“怎么”&#xff0c…

儿童台灯怎么选对眼睛好?2023开学必买的儿童台灯

l 通过国家卫健委发布的数据——2020年儿童青少年总体近视率高达52.7% l 爱尔眼科视光研究所的数据——6岁儿童中45%已失去远视储备&#xff0c;6-10岁近视度数增长最快 l 孩童近视程度的发展之外&#xff0c;让人猝不及防 l 在光照环境中&#xff0c;能给孩子们提供最好的阅…

力扣468验证IP地址C++判断合法IP字符串

目录前言题目描述解题思路主功能函数分类大框架判断IPv4是否合法判断IPv6是否合法其余小边界条件(调试后得)完整代码前言 这是一道常见的笔试面试题,我找实习已经碰到两次了&#xff0c;和矩阵的乘法出现频率一样高&#xff0c;你校招要是全程没遇到可以过来打我;(这道题大厂面…

SAP IFRS 17 面向服务架构详细解析(包含分类账规则)

经过漫长的旅程,国际会计准则委员会 (IASB) 于 2017 年 5 月发布了 IFRS 17“保险合同”(IFRS 17)。IFRS 17 取代了 2004 年发布的 IFRS 4。总体目标是提供一个更加透明和全球签发保险合同的实体之间保险合同的统一会计模型。在 IFRS 17 标准发布三年后,IASB 于 2020 年 6 月…

Linux下tomcat服务器的html文件部署

本章介绍使用Xshall发布命令,远程操作Linux系统,在Linux上搭建Java程序部署环境 本文章只是简单介绍html文件的部署,不涉及连接数据库 1.安装JDK 使用yum安装openjdk与windows中的jdk虽然不同,但是功能相似,这里的yum相当与中央管理仓库,包含了各种各样的软件 列出jdk相关的…

【黄啊码】PHP结合vue导出excel乱码

在这之前我们先回顾以前用php导出excel&#xff0c;我直接写成方法在这里&#xff1a; public static function phpExcelList($field, $list, $title文件,$file_time){$spreadsheet new Spreadsheet();$sheet $spreadsheet->getActiveSheet();foreach ($list as $key >…

【靶机】vulnhub靶机clover:1

靶机下载地址&#xff1a; Clover: 1 ~ VulnHub 靶机ip&#xff1a;192.168.174.145 Kali ip&#xff1a;192.168.174.128 靶机ip发现&#xff1a;sudo arp-scan -l 靶机开放端口扫描 分析&#xff1a; 发现开放了21端口ftp服务&#xff0c;且允许匿名登录 22端口ssh服务 8…

【交换机转发工作原理【泛洪、转发、丢弃】】

新的一年 新的征程 新的课程开班 等你来学&#xff01; ​一、交换机的三张表 在讲交换机转发工作原理前&#xff0c;先介绍交换机的三张表&#xff1a; 1.ARP缓存表&#xff1a;ARP(Address Resolution Protocol)地址解析协议&#xff0c;主要作用将目的IP地址解析(映射…