KDM CCA Secure FHE

news2024/10/6 10:34:51

参考文献:

  1. [BFM88] Blum M, Feldman P, Micali S. Non-interactive zero-knowledge and its applications[M]//Providing Sound Foundations for Cryptography: On the Work of Shafi Goldwasser and Silvio Micali. 2019: 329-349.
  2. [FS90] Feige U, Shamir A. Witness hiding and witness indistinguishability[C]//Proc. 22nd Annual ACM Symposium on the Theory of Computing, Baltimore. 1990: 416-426.
  3. [NY90] Naor M, Yung M. Public-key cryptosystems provably secure against chosen ciphertext attacks[C]//Proceedings of the twenty-second annual ACM symposium on Theory of computing. 1990: 427-437.
  4. [BR95] Bellare M, Rogaway P. Optimal asymmetric encryption[C]//Advances in Cryptology—EUROCRYPT’94: Workshop on the Theory and Application of Cryptographic Techniques Perugia, Italy, May 9–12, 1994 Proceedings 13. Springer Berlin Heidelberg, 1995: 92-111.
  5. [BRS02] Black J, Rogaway P, Shrimpton T. Encryption-scheme security in the presence of key-dependent messages[C]//Selected Areas in Cryptography: 9th Annual International Workshop, SAC 2002 St. John’s, Newfoundland, Canada, August 15–16, 2002 Revised Papers 9. Springer Berlin Heidelberg, 2003: 62-75.
  6. [BP04] Bellare M, Palacio A. Towards plaintext-aware public-key encryption without random oracles[C]//International Conference on the Theory and Application of Cryptology and Information Security. Berlin, Heidelberg: Springer Berlin Heidelberg, 2004: 48-62.
  7. [Gen09] Gentry C. A fully homomorphic encryption scheme[M]. Stanford university, 2009.
  8. [LMSV12] Loftus J, May A, Smart N P, et al. On CCA-secure somewhat homomorphic encryption[C]//Selected Areas in Cryptography: 18th International Workshop, SAC 2011, Toronto, ON, Canada, August 11-12, 2011, Revised Selected Papers 18. Springer Berlin Heidelberg, 2012: 55-72.

文章目录

  • Naor-Yung Paradigm
  • Key-Dependent Messages
  • CCA-secure SWHE
  • 安全性的关系

Naor-Yung Paradigm

最早在 [BFM88] 中,文章提出了 NIZKP 的概念,并证明任意的 ZKP 协议中的交互,可以被取代为一个共享的短随机带。本文基于二次剩余假设,构造了一个三着色语言的非交互零知识证明协议。[BFM88] 最后简略地提出,可以用 NIZKPoK 证明 “我知道此密文的解密”,从而使得解密神谕无用,把 IND-CCA 归约到 IND-CPA 上,第一次给出了 IND-CCA 安全的密码协议。

[NY90] 则是第一次给出了如何将 IND-CPA PKE 转化为 IND-CCA PKE 的具体构造方案,并给出了安全性证明。并不是证明 “我知道密文的解密”,而是类似于 [FS90] 的 WH/WI,将消息独立地加密两次,然后证明两个密文的一致性(不再需要 PoK)。由于解密时只需要两个密文其中之一,因此只要持有其中之一的私钥就可以解密成功(从而模拟解密神谕)。所以可以将针对 IND-CPA PKE 的 CPA 攻击,模拟成针对 IND-CCA PKE 的 CCA 攻击,这就完成了安全归约。

[NY90] 使用了 [BFM88] 的 CRS 模型下的 NIZKP,简记为 ( P , V , U ) (P,V,U) (P,V,U),其中 U U U 是 CRS 的均匀分布。令 R ← U R \leftarrow U RU 是公共随机串, p p p 是个 proof,那么 ( R , p ) (R,p) (R,p) 是 NIZK 的副本,而 ZK 模拟器需要给出不可区分的分布。

但是 [NY90] 有一些额外要求:

  1. 简单并行 NIZKP,可以降低 soundness erorr,并且保持 ZK 性质(交互式 ZKP 不一定保持 ZK,仅仅保持 WI)

  2. Strong soundness:即使 CRS 随机带 R R R 已知,然后才选择实例 y ∉ L y \not\in L yL,依然以压倒性概率使得 P ∗ P^* P 给出的 proof 不被接受,
    P r R ← U n [ V ( R , y , p ; r V ) = R e j e c t : ∀ y ∉ L , ∀ p ← P ∗ ( R , y ; r P ) ] = 1 − n e g l ( n ) \underset{R \leftarrow U_n}{Pr}\left[ V(R,y,p;r_V)=Reject: \forall y \not\in L, \forall p\leftarrow P^*(R,y;r_P) \right] = 1-negl(n) RUnPr[V(R,y,p;rV)=Reject:yL,pP(R,y;rP)]=1negl(n)

    作为对比,soundness 仅仅要求
    ∀ y ∉ L , P r R ← U n [ V ( R , y , p ; r V ) = R e j e c t : ∀ p ← P ∗ ( R , y ; r P ) ] = 1 − n e g l ( n ) \forall y \not\in L, \underset{R \leftarrow U_n}{Pr}\left[ V(R,y,p;r_V)=Reject: \forall p\leftarrow P^*(R,y;r_P) \right] = 1-negl(n) yL,RUnPr[V(R,y,p;rV)=Reject:pP(R,y;rP)]=1negl(n)

    可以使用量词转换技术(quantifier swapping technique ),并行 2 n 2n 2n 个副本,使得 soundness error 降低到至多 2 − 2 n 2^{-2n} 22n,由于 ∣ y ∣ = n |y|=n y=n,因此 strong soundness error 就至多为 2 − n 2^{-n} 2n

  3. Valid distributions:在 strong soundness 中要求 CRS 的分布服从均匀分布,但是 Sim 模拟的分布 S R ( x ) , x ∈ L S_R(x),x \in L SR(x),xL 不一定是均匀的。我们说分布簇 { Q R ( x ) : x ∈ L } \{Q_R(x):x \in L\} {QR(x):xL} 是有效的,如果不存在 PPT 算法:它先选择 x ∈ L x \in L xL,然后输入 R ← Q R ( x ) R \leftarrow Q_R(x) RQR(x),以显著优势找到一对 invalid word ( y , p ) (y,p) (y,p),使得 y ∉ L , p ∈ A c c e p t ( R , y ) y \not\in L,p \in Accept(R,y) yL,pAccept(R,y)。[NY90] 要求模拟器输出的分布簇 { S R ( x ) : x ∈ L } \{S_R(x):x \in L\} {SR(x):xL} 是有效的,并证明了任意的 NIZKP 都可以转化为 S R S_R SR 有效的另一个 NIZKP。

  4. Recognizability:要求存在一个有效算法,可以识别出 invalid word

现在,使用上述的 NIZKP,可以将 IND-CPA PKE Π = ( G e n , E n c , D e c ) \Pi=(Gen,Enc,Dec) Π=(Gen,Enc,Dec) 转化为 IND-CCA PKE Π ′ = ( G e n ′ , E n c ′ , D e c ′ ) \Pi'=(Gen',Enc',Dec') Π=(Gen,Enc,Dec)。我们定义 NP 语言 consistent double encryptions
L N Y Π : = { ( p k 1 , p k 2 , c 1 , c 2 ) : ∃ m , r 1 , r 2 ,    s . t .    c 1 = E ( p k 1 , m ; r 1 ) , c 2 = E ( p k 2 , m ; r 2 ) } L_{NY}^\Pi := \{(pk_1,pk_2,c_1,c_2): \exists m,r_1,r_2,\,\, s.t.\,\, c_1=E(pk_1,m;r_1), c_2=E(pk_2,m;r_2)\} LNYΠ:={(pk1,pk2,c1,c2):m,r1,r2,s.t.c1=E(pk1,m;r1),c2=E(pk2,m;r2)}

( P , V , U ) (P,V,U) (P,V,U) 是关于语言 L N Y Π L_{NY}^\Pi LNYΠ 的 NIZKP。那么 Naor-Yung Paradigm 就是:

  1. ( s k , p k , R ) ← G e n ′ ( n ) (sk,pk,R) \leftarrow Gen'(n) (sk,pk,R)Gen(n):独立运行两次 G e n Gen Gen 获得独立随机公私钥对 ( s k 1 , p k 1 ) , ( s k 2 , p k 2 ) (sk_1,pk_1),(sk_2,pk_2) (sk1,pk1),(sk2,pk2),随机采样 R ← U R \leftarrow U RU
  2. ( c 1 , c 2 , p ) ← E n c ′ ( p k , m ) (c_1,c_2,p) \leftarrow Enc'(pk,m) (c1,c2,p)Enc(pk,m):采样随机带 r 1 , r 2 r_1,r_2 r1,r2,分别加密 c i = E ( p k i , m ; r i ) , i = 1 , 2 c_i=E(pk_i,m;r_i),i=1,2 ci=E(pki,m;ri),i=1,2,并给出一致性证明 p = P ( R , ( p k 1 , p k 2 , c 1 , c 2 ) , ( m , r 1 , r 2 ) ) p=P(R,(pk_1,pk_2,c_1,c_2),(m,r_1,r_2)) p=P(R,(pk1,pk2,c1,c2),(m,r1,r2))
  3. m ← D e c ( s k , c ) m \leftarrow Dec(sk,c) mDec(sk,c):验证一致性 t ← V ( R , ( p k 1 , p k 2 , c 1 , c 2 ) , p ) t \leftarrow V(R,(pk_1,pk_2,c_1,c_2),p) tV(R,(pk1,pk2,c1,c2),p),并用 s k i , i = 1 , 2 sk_i,i=1,2 ski,i=1,2(其中之一)解密对应的密文 c i c_i ci 得到消息 m m m

在 [NY90] 中证明了上述方案是 IND-CCA 的(当时人们还没区分 CCA1/CCA2,但它应该是 IND-CCA2 的),否则便打破了 CPA 或者 ZK。大体思路是:给定 CPA 目标 ( p k 1 , c t 1 = E ( p k 1 , b 1 , r 1 ) ) (pk_1, ct_1=E(pk_1, b_1, r_1)) (pk1,ct1=E(pk1,b1,r1)),随机生成 ( s k 2 , p k 2 ) (sk_2, pk_2) (sk2,pk2),计算 c t 2 = E ( p k 2 , b 2 = 0 , r 2 ) ct_2=E(pk_2, b_2=0, r_2) ct2=E(pk2,b2=0,r2),运行 NIZK Sim 模拟出 ( c t 1 , c t 2 ) (ct_1,ct_2) (ct1,ct2) 的一致性证明 ( R , p ) (R,p) (R,p),这就制造出了一个 CCA 目标 ( ( p k 1 , p k 2 ) , R , c t ∗ = ( c t 1 , c t 2 , p ) ) ((pk_1,pk_2), R, ct^* = (ct_1,ct_2,p)) ((pk1,pk2),R,ct=(ct1,ct2,p));每当 CCA 敌手询问解密神谕,只要它不是 invalid word(根据 Valid distributions 以及 Recognizability,压倒性优势不会出现),我们就可以用 s k 2 sk_2 sk2 正确解密;当 CCA 敌手以显著优势猜测 c t ∗ ct^* ct 时,根据 b 1 = 0 = b 2 b_1=0=b_2 b1=0=b2 还是 b 1 = 1 ≠ b 2 b_1=1\neq b_2 b1=1=b2 导致不同的概率分布,从而以显著优势区分出 CPA 目标。另外 CRS 模型下的 NIZK of NPC,替换为 ROM 模型下语言 L N Y Π L_{NY}^\Pi LNYΠ 专用的 FS Heuristic 似乎也没问题。

Key-Dependent Messages

[BRS02] 提出了 KDM 安全的概念,它严格地比 IND-CPA更强(KDM 则必然 IND-CPA,反之不然)。并且,本文证明了(对称/非对称)KDM 安全在 ROM 下轻易可达

想要构造安全的 FHE 方案总是绕不过 KDM 安全,我们可以利用 KDM 安全的可自举 SWHE,通过重加密来获得 FHE。不过 standard model 下可以构造出 KDM 安全的 PKE 么?毕竟 Hash 函数的乘法深度太大了。

符号表 S S S,令 S ∗ S^* S 代表有限长字符串, S ∞ S^\infty S 代表无限长字符串。令 K = ( K 1 , K 2 , ⋯   ) K=(K_1,K_2,\cdots) K=(K1,K2,) 是一串秘钥,函数 g g g 作用在 K K K 上计算函数值。敌手 A A A 试图与函数 g g g 共谋,使得 g g g 的输出值对应的密文泄露秘钥的部分信息。令 H H H 是随机神谕,ROM 下对称加密的 KDM 安全性

在这里插入图片描述

注意默认的基本要求是 ∣ g H ( K ) ∣ = ∣ g H ′ ( K ′ ) ∣ , ∀ H ≠ H ′ , ∀ K ≠ K ′ |g^H(K)| = |g^{H'}(K')|, \forall H \neq H',\forall K \neq K' gH(K)=gH(K),H=H,K=K,保证密文长度不会泄露秘钥信息。如果简单地把 H H H 去掉,那么就是 standard model 下的安全性定义了。

[BRS02] 给出了 ROM 下 KDM 安全的对称加密方案。令 Π = ( K G , E , D ) \Pi=(KG,E,D) Π=(KG,E,D) 是标准模型下 IND-CPA 安全的对称加密,那么构造 Π ′ = ( K G ′ , E ′ , D ′ ) \Pi'=(KG',E',D') Π=(KG,E,D)

  1. 秘钥生成算法 K G ′ ( λ ) KG'(\lambda) KG(λ):简单调用算法 K G ( λ ) KG(\lambda) KG(λ) 获得对称秘钥 k ∈ { 0 , 1 } λ k \in \{0,1\}^\lambda k{0,1}λ
  2. 加密算法 E ′ ( k , m ) E'(k,m) E(k,m):随机采样 r ∈ { 0 , 1 } λ r \in \{0,1\}^\lambda r{0,1}λ,计算 k ′ = H ( k ∥ r ) k'=H(k\|r) k=H(kr),输出密文 r ∥ E ( k ′ , m ) r\|E(k',m) rE(k,m)
  3. 解密算法 D ′ ( k , c ) D'(k,c) D(k,c):计算 k ′ = H ( k ∥ r ) k'=H(k\|r) k=H(kr),输出消息 D ( k ′ , c ) D(k',c) D(k,c)

特别地,可以简单设置 E ( k , m ; r ) = k ⊕ m E(k,m;r) = k \oplus m E(k,m;r)=km 是个 one-time pad。对于这个 Π \Pi Π 转化得到的 Π ′ \Pi' Π,假设 KDM 敌手 A A A 询问了 q q q 次(加密神谕、直接 RO、间接 RO),那么优势仅为 A d v Π ′ K D M ( A ) ≤ q 2 / 2 λ − 2 Adv_{\Pi'}^{KDM}(A) \le q^2/2^{\lambda-2} AdvΠKDM(A)q2/2λ2

类似的,可以给出公钥方案的 standard/RO model 下的 KDM 安全性

在这里插入图片描述

我们构造 ROM 下 KDM 安全的公钥方案。令 ( f , f − 1 ) (f,f^{-1}) (f,f1) 是 trapdoor PRP,

  1. 加密算法 E ( f , m ) E(f,m) E(f,m):随机采样 r r r,输出密文 f ( r ) ∥ H ( r ) ⊕ m f(r)\|H(r) \oplus m f(r)H(r)m(咦?跟 FO Transform 好像啊!)
  2. 解密算法 D ( f − 1 , c ) D(f^{-1},c) D(f1,c):求逆 r = f − 1 ( f ( r ) ) r=f^{-1}(f(r)) r=f1(f(r)),解密出消息 m m m

如果 { f } \{f\} {f} 是安全的 trapdoor PRP,那么上述方案是 IND-KDM 安全的。或者给定某 IND-CPA 安全的 PKE,也可以类似的转化为 IND-KDM 安全。

不过怎么保持SWHE的同态性质?[Gen09] 中,仅在加密私钥时使用 KDM 加密:
E ( s k ) : = S W H E . E ( r ) ∥ S Y M . E ( H ( r ) , s k ) E(sk) := SWHE.E(r) \| SYM.E(H(r), sk) E(sk):=SWHE.E(r)SYM.E(H(r),sk)

把它放在 pk 中。而加密消息时,依然是 E ( m ) : = S W H E . E ( m ) E(m):=SWHE.E(m) E(m):=SWHE.E(m)。同态电路中,首先计算 H ( r ) H(r) H(r) 解密出 s k sk sk,然后再自举刷新 E ( m ) E(m) E(m)。这个方案是 ROM 下 KDM 安全的。进一步的,只要这个 SWHE 能够支持同态计算 S Y M . D ( H ( r ) , s k ) SYM.D(H(r), sk) SYM.D(H(r),sk),那么就可以将上述协议归约为 pk 中仅存放 E ( s k ) : = S W H E . E ( s k ) E(sk) := SWHE.E(sk) E(sk):=SWHE.E(sk) 的自然 FHE,从而(不包含 Hash 函数的)FHE 是 ROM 下语义安全的(而非标准模型)。

CCA-secure SWHE

[BR95] 提出了 Plaintext Awareness 的概念:生成密文的唯一方式就是从明文加密获得。根据定义的一些细微区别,[BP04] 把 PA 分为了 PA-0, PA-1, PA-2,并且有 PA-X + CPA = CCA-X, X=1,2,安全性的关系如图:

在这里插入图片描述

因为 PA 是一个强大的概念,为了证明它也就需要强大的假设:knowledge assumption。例如:某算法可以输出一个十分靠近格点的非格点向量,那么它必须 “知道”(    ⟺    \iff 可以写出)对应的最近格点。为了证明某 CPA 安全的方案也是 CCA1 安全的,我们需要 PA-1 的概念,它定义如下:

在这里插入图片描述

很明显,由于同态方案的延展性(malleable),IND-CCA2 是不可达的。但是一些单同态方案(ElGamal 变体)确实达到了 IND-CCA1 安全,而 [LMSV12] 第一次给出了 IND-CCA1 安全的 SWHE(标准模型 + 知识假设)。不过本文构造的 SWHE 是基于 ideal lattice 的 Gentry 方案的变体,结构较为复杂,看不太懂。后续是否有人给出基于 (R/M)LWE 的 CCA1 安全的 SWHE 呢?

他们进一步证明了这个 SWHE 方案不是 CVA 安全的(ciphertext verifification, 敌手两个阶段都可以访问一个判断密文是否有效的神谕)。这说明 IND-CCA1 或者 PA-1 不能导致 CVA,但是解密神谕直接导出密文有效性神谕,于是 CVA 应当是介于 CCA1 和 CCA2 之间的安全强度。所以,SWHE 是否可以达到 CVA 安全呢?

在这里插入图片描述

[LMSV12] 最后考虑了 CCA2 安全对于 FHE 场景的必要性(例如,异步的多方安全计算,新鲜密文 E ( m ) E(m) E(m) 可被其他人复制为 E ( 0 ) + E ( m ) E(0)+E(m) E(0)+E(m),再假设计算的是 majority 函数),提出了 CCA-embeddable homomorphic encryption,也就是使用 Naor-Yung Paradigm 把一个 IND-CPA 安全的 FHE,转化为 IND-CCA2 安全的 PKE(整体上不再是 FHE,但是它包含的两个密文 ( c 1 , c 2 ) (c_1,c_2) (c1,c2) 还可以做同态计算)。

安全性的关系

总结下一些安全性定义之间的强度关系:

  1. C P A ≤ K D M CPA \le KDM CPAKDM
  2. C C A 1 ≤ C P A + P A 1 ≰ C C A 2 CCA1 \le CPA+PA1 \not\le CCA2 CCA1CPA+PA1CCA2
  3. C P A ≤ C V A ≤ C C A 2 C V A ≰ C C A 1 CPA \le CVA \le CCA2\\ CVA \not\le CCA1\\ CPACVACCA2CVACCA1

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

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

相关文章

智能合约漏洞案例,Euler Finance 1.96 亿美元闪电贷漏洞分析

智能合约漏洞案例,Euler Finance 1.96 亿美元闪电贷漏洞分析 2023 年 3 月 13 日上午 08:56:35 UTC,DeFi 借贷协议 Euler Finance 遭遇闪电贷攻击。 Euler Finance 是一种作为无许可借贷协议运行的协议。其主要目标是为用户提供各种加密货币的借贷便利。…

免单商城系统小程序开发源码功能解析

商品免单是现在很多商家喜欢做的一种营销活动,市面上几乎所有商家都是利用免单系统进行免单活动的,但大部分的免单系统仅仅只有排队免单功能,免单的周期长类目单一。我们的免单系统是将获客、拉新、留存、转化集于一身,多种免单拓…

什么是Java中的“内存屏障“(Memory Barrier)?它们有什么作用?

内存屏障是一种用于控制内存访问顺序的指令。在多核处理器上运行的多线程程序可能会因处理器的乱序执行和缓存一致性问题而导致意外的行为。内存屏障可以用来强制某些操作的顺序,以确保线程间的正确协同。 作用包括: 保证写入的可见性:内存…

前缀和实例4(和可被k整除的子数组)

题目: 给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的(连续、非空) 子数组 的数目。 子数组 是数组的 连续 部分。 示例 1: 输入:nums [4,5,0,-2,-3,1], k 5 输出:7 …

Linux驱动IO篇——异步通知

文章目录 什么是异步通知异步通知和异步IO的区别信号含义应用层使用信号驱动如何实现异步信号驱动实例 什么是异步通知 异步通知在Linux的实现中是通过信号,而信号是在软件层次上对中断机制的一种模拟。这种机制和中断非常类似,所以可以以中断的思想来理…

AI绘画:如何让图片开口说话生成视频?变现渠道有哪些?

如何让AI绘画做出来的视频可以开口说话,本篇文章给你讲解清楚。 这个项目市面上有很多种叫法,AI数字人,图片说话,图片数字人等等。 废话不多说,直接以AI小和尚为例进行实操。 1.生成图片: 用Midjourney…

操作系统期末复习笔记

文章目录 操作系统第1章 计算机系统概述1 指令执行的基本指令周期2 中断分类与中断处理过程2.1 中断的定义2.2 中断分类2.3 中断的意义2.4 无中断2.5 有中断2.6 中断和指令周期2.7 中断处理的过程 3 处理多中断的两种方法3.1 顺序中断处理(禁止中断)3.2 …

大数据-玩转数据-Flink恶意登录监控

一、恶意登录 对于网站而言,用户登录并不是频繁的业务操作。如果一个用户短时间内频繁登录失败,就有可能是出现了程序的恶意攻击,比如密码暴力破解。 因此我们考虑,应该对用户的登录失败动作进行统计,具体来说&#x…

批量获取CSDN文章对文章质量分进行检测,有助于优化文章质量

📚目录 ⚙️简介✨分析获取步骤⛳获取文章列表☘️前期准备✨ 接口解析⚡️ 获取文章的接口 ☄️文章质量分接口⭐接口分析 ⌛代码实现:⚓核心代码:⛵测试用例:⛴ 运行效果:☘️增加Excel导出 ✍️结束 ⚙️简介 有时候我们写文章是为了记录当下遇到的bu…

乙方策划人员的内心独白:写不完的案子,是工作的常态吗?

在某种程度上来说,这是对的。 如果是年轻人来说,在甲方当策划就是当执行,只有积累一定经验才能真正实行策划任务、 而在乙方做策划那就是纯纯的策划,也就是你说的每天写不完的案子。 对于普通人的职场选择往往是就近选择&#…

服务治理平台:SOA与微服务架构的对比与区别

文章目录 1、场景引入2、面向服务的架构SOA3、微服务架构4、对比与联系5、服务治理平台 1、场景引入 如果我们打开支付宝首页,去看我们的余额,它会展示你的总资产,昨日收益、累计收益等信息。假如这个页面所展示的信息,都来自各个…

非常详细的trunk-based分支管理流程配置及使用

非常详细的trunk-based分支管理流程配置及使用。 目前业界主流的版本管理流程是Gitflow 和 trunk-based。 Gitflow流行的比较早。但是目前的流行度要低于 trunk-based模式工作流。trunk-based模式被誉为是现代化持续集成的最佳实践。 他俩的核心区别是,Gitflow是一个更严格…

格式化文件恢复软件有哪些 格式化文件恢复软件怎么用

格式化是指对磁盘或者磁盘中的分区进行初始化的一种操作,但是这种操作会造成磁盘内数据的清除。因此,当我们需要恢复一些数据时,就要借助相关数据恢复软件的帮助,那么下面就来给大家介绍格式化文件恢复软件有哪些,格式…

ORB-SLAM2_RGBD_DENSE_MAP编译、问题解决、离线加载TUM数据和在线加载D435i相机数据生成稠密地图

文章目录 0 引言1 安装依赖1.1 其他库安装1.2 pcl库安装 2 编译ORB-SLAM2_RGBD_DENSE_MAP2.1 build.sh2.2 build_ros.sh 3 运行ORB-SLAM2_RGBD_DENSE_MAP3.1 build.sh编译版本3.2 build_ros.sh编译版本 0 引言 ORB-SLAM2_RGBD_DENSE_MAP是基于ORB-SLAM2框架的一种RGB-D稠密地图…

【C++】LeetCode 160 相交链表

今天再写一道算法题(这两周都写算法题有点摆烂) 题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交&#xff1…

第17篇ESP32 platformio_arduino框架 AP热点与AP+STA同时存在模式

笔记本连接ESP32后,串口打印连接状态: 第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 第4篇:vscodeplatformio搭建esp32 arduino开发环境 ​​​​​​第5篇:doit…

影楼管理系统软件erp如何通过快解析发布到外网登录访问

影楼管理系统也叫影楼ERP软件,即影楼信息化管理系统,通常集成了选片、影楼流程管理、婚纱礼服、影楼财务、影楼客服、影楼接单等多功能为一身的影楼app管理。通过影楼管理系统把客户关系管理理念引入影楼管理,有序而全面的建立客户资料库&…

【9】openGL调用imGUI使用其自带例子测试

参考视频 去github下载imgui源码,得到 将根目录下所有.h .cpp文件复制到你的项目文件夹imgui下面。 进入exmaple文件夹,可以看到例子 这是它调用的头文件 在backends里找到你需要的 .h .cpp文件,总共四个文件,复制过来 你的项…

使用阿里云无影云电脑能干什么?

阿里云无影云电脑是一种易用、安全、高效的云上桌面服务,阿里云无影云电脑可用于高数据安全管控、高性能计算等要求的金融、设计、视频、教育等领域,适用于多种办公场景,如远程办公、多分支机构、安全OA、短期使用、专业制图等。阿里云百科来…

Java基于微信小程序的电影交流平台

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 第一章:简介第二章、开发环境:后端:前端:数据库&…