网安笔记06 数字签名基本概念

news2024/10/7 10:15:37

数字签名基本概念

  1. R1:receiver确认、证实sender的签名,这个签名不能被伪造
  2. S:sender发送出签名的教习给receiver,不能否认他签发的消息
  3. R2:receiver堆收到的签名消息不能否认,收报认证
  4. T:第三方可以确认手法收发双方之间的消息传输,但不可伪造

与消息认证的区别:

消息认证:只用于防范第三者破坏,未验证sender身份(RS双方没有利害冲突)

  • receiver验证sender身份是否被篡改
  • receiver验证消息是否被篡改

数字签名:(RS双方存在利害冲突)

  • 数字签名确定消息来源的真实性
  • 数字签名保证实体身份的真实性
  • 不可否认

与公钥加密的区别

公钥

  • A用B公开密钥加密data后,发送data(已加密)给B
  • B用私钥堆密文解密得到明文

签名

  • A用私钥加密消息m签名,将m与签名发送给B
  • B 收到A签名,使用A公钥验证签名有效性
  • 签名消息可能要多年以后验证
  • 签名可能要多次严正
  • 签名安全性、防伪造要求高
  • 签名速度要比验证速度快

分类

消息是否被压缩分类:

  1. 对整体消息签名
  2. 对压缩的消息签名

按消息/签名对应关系划分

  1. 确定性deterministic数字签名:消息与签名一一对应。对同意消息签名永不变化 —— RSA/Rabin算法
  2. 随机化 randomized

构成

  1. 签名算法 signature algorithm
  2. 验证算法 verification algorithm

安全性约定: 签名算法、密钥是秘密的,只有签名人掌握;验证算法公开

签名

( M , S , K , V ) (M,S,K,V) (M,S,K,V)

  • M 明文空间
  • S 签名集合
  • K 密钥空间
  • V 验证函数的值域, 真、伪组成

∀ k ∈ K , m ∈ M 签名算法 : s = S i g k ( m ) ∈ S 验证算法 : V e r l ( s , m ) ∈ { t r u e , f a l s e } \forall k\in K, m\in M\\签名算法:s = Sig_k(m)\in S \\ 验证算法: Ver_l(s,m)\in\{true, false\} kK,mM签名算法:s=Sigk(m)S验证算法:Verl(s,m){true,false}

安全性:m和s很难推出签名者私钥 k k k,很难伪造信息 m ′ m' m使得 V e r k ( s , m ′ ) = t r u e Ver_k(s,m') = true Verk(s,m)=true

签名体制

RSA数字签名

参数同之前讲过的RSA

n = p ∗ q n = p * q n=pq

选e计算出d让 e d ≡ 1   m o d   ϕ ( n ) ed \equiv 1\ mod\ \phi(n) ed1 mod ϕ(n)

n和e公开,p,q,d保密

RSA密码: c = m e c = m ^ e c=me
∀ m ∈ Z n , 签名 s = S i g k ( m ) = m d   m o d   n \forall m \in Z_n, 签名s = Sig_k(m) = m^d\ mod\ n mZn,签名s=Sigk(m)=md mod n

验证真实性:签名者才知道私钥d,其他人难以伪造
m ≡ s e   m o d   n m\equiv s^e\ mod \ n mse mod n

Rabin

N = p q N = pq N=pq。 p和q都是大质数
m , s ∈ Q R p ∩ Q R q m,s\in QR_p\cap QR_q m,sQRpQRq QR是二次剩余集

pq密钥,N公钥

签名过程

  • 消息 m , 0 < m < N , m ∈ Q R p ∩ Q R q 消息m, 0<m<N,m\in QR_p\cap QR_q 消息m,0<m<N,mQRpQRq
  • s = S i g k ( m ) = m   m o d   ( p × q ) s = Sig_k(m) = \sqrt{m}\ mod\ (p\times q) s=Sigk(m)=m  mod (p×q)

验证过程

m ≡ s 2   m o d   N m\equiv s^2\ mod \ N ms2 mod N

二次剩余集

n为正整数,整数a满足
g c d ( a , n ) = 1 gcd(a,n) = 1 gcd(a,n)=1
x 2 = a   m o d   n 有解 x^2=a\ mod \ n有解 x2=a mod n有解
a为mod n的平方剩余

如选n=7
x 2 = 1   m o d   7 x = 1 / 6 x^2=1\ mod \ 7\quad x = 1/6 x2=1 mod 7x=1/6
x 2 = 2   m o d   7 x = 3 / 4 x^2=2\ mod \ 7\quad x = 3/4 x2=2 mod 7x=3/4
x 2 = 3   m o d   7 无解 x^2=3\ mod \ 7\quad 无解 x2=3 mod 7无解
x 2 = 4   m o d   7 x = 2 / 5 x^2=4\ mod \ 7\quad x = 2/5 x2=4 mod 7x=2/5
x 2 = 5   m o d   7 无解 x^2=5\ mod \ 7\quad 无解 x2=5 mod 7无解
x 2 = 6   m o d   7 无解 x^2=6\ mod \ 7\quad 无解 x2=6 mod 7无解
1, 2, 4是 mod 7的二次剩余,且每个二次剩余有两个平方根

3, 5, 6是 mod 7的非二次剩余

ELGamal

参数

  • p 大素数,在 Z p Z_p Zp中求解离散对数十分困难
  • g 群 Z p ∗ Z_p^* Zp的一个生成元或本原元素
  • M 消息空间 Z p ∗ Z_p^* Zp
  • S 签名空间 Z p − 1 Z_{p-1} Zp1
  • x 用户密钥 x ∈ Z p ∗ x\in Z_p^* xZp
  • y 用户公钥 y ≡ g x   m o d   p y\equiv g^x\ mod \ p ygx mod p

p,g,y公钥,x密钥

签名过程

  1. 选择随机数 k ∈ Z p ∗ m ∈ M k\in Z_p^*\quad m\in M kZpmM
  2. 得到 H ( m ) H(m) H(m)
  3. 得到 r = g k   m o d   p r = g^k\ mod\ p r=gk mod p
  4. 得到 s = [ H ( m ) − x r ] k − 1   m o d   ( p − 1 ) s = [H(m) - xr]k^{-1} \ mod\ (p-1) s=[H(m)xr]k1 mod (p1)
  5. 得到签名 S i g k ( m ) = ( r , s ) , m 与 ( r , s ) Sig_k(m)=(r,s), m与(r,s) Sigk(m)=(r,s),m(r,s)发给对方

验证过程

  1. 得到 m 与 ( r , s ) m与(r,s) m(r,s)
  2. 计算 H ( m ) H(m) H(m)
  3. 验证
    V e r k ( H ( m ) , ( r , s ) ) = = t r u e ⇔ y r r s = g H ( m )   m o d   p Ver_k(H(m), (r,s)) == true \Leftrightarrow y^rr^s=g^{H(m)}\ mod\ p Verk(H(m),(r,s))==trueyrrs=gH(m) mod p
    ( r x + s k ) = H ( m )   m o d   ( p − 1 ) (rx+sk)=H(m)\ mod\ (p-1) (rx+sk)=H(m) mod (p1)
    得到
    y r r s = g H ( m )   m o d   p y^rr^s=g^{H(m)}\ mod\ p yrrs=gH(m) mod p

Example

  1. p = 467, g = 2, x = 127
  2. 得到 y = g x = 2 127 = 132   m o d   467 y = g^x = 2^{127}=132 \ mod\ 467 y=gx=2127=132 mod 467
  3. 得到m的哈希值 H ( m ) = 100 H(m)=100 H(m)=100,选随机数k = 213 (注意213和466互质,且 21 3 − 1 = 431   m o d   466 213^{-1} = 431\ mod \ 466 2131=431 mod 466)
  4. r = 2 213 = 29   m o d   467 r = 2^{213}=29\ mod\ 467 r=2213=29 mod 467 s = ( 100 − 127 × 29 ) × 431 = 51   m o d   466 s = (100-127\times 29)\times 431 = 51\ mod\ 466 s=(100127×29)×431=51 mod 466
  5. 验证:收信人计算出 H ( m ) = 100 H(m) = 100 H(m)=100, 13 2 29 2 9 51 = 189   m o d   467 132^{29}29^{51}=189\ mod\ 467 132292951=189 mod 467, 2 100 = 189   m o d   467 2^{100}=189\ mod\ 467 2100=189 mod 467

安全性

不知道<消息,签名>对的时候,伪造签名 近似 求离散对数

Attacker若掌握同一随机数k下两个消息 m 1 , m 2 m_1,m_2 m1,m2的合法签名 ( r 1 , s 1 ) , ( r 2 , s 2 ) (r_1,s_1),(r_2,s_2) (r1,s1),(r2,s2)会构造如下方程
m 1 = r 1 x + s 1 k m 2 = r 2 x + s 2 k m_1=r_1x+s_1k\\ m_2=r_2x+s_2k m1=r1x+s1km2=r2x+s2k
攻击者解此房产可求出x和k

确保安全性需要选签名的时候选择不同随机数k

Schnorr签名体制

参数

  • q,p 大素数,q|p-1, 在 Z p Z_p Zp中求解离散对数 十分困难
  • g Z p Z_p Zp中乘群 Z p ∗ Z_p^* Zp的一个元素,满足 g q = 1   m o d   p g^q = 1\ mod\ p gq=1 mod p
  • M 消息空间, Z p ∗ Z_p^* Zp
  • S 签名空间 Z p ∗ × Z p − 1 Z_p^*\times Z_{p-1} Zp×Zp1
  • x 用户密钥 1 < x < q 1 < x < q 1<x<q
  • y 用户公钥 y ≡ g x   m o d   p y\equiv g^x\ mod \ p ygx mod p

p,q,g,y公钥,x密钥

过程

  1. user 使用随机数 k ∈ Z q , m ∈ M k\in Z_q, m\in M kZq,mM
  2. 计算 w = g k   m o d   p w=g^k\ mod\ p w=gk mod p
  3. 计算 r = H ( w ∣ ∣ m ) r = H(w||m) r=H(w∣∣m) ||表示拼接
  4. 计算 s = k + x r   m o d   p s = k+xr\ mod\ p s=k+xr mod p
  5. 签名 S i g k ( m ) = ( r , s ) Sig_k(m)=(r,s) Sigk(m)=(r,s)作为签名,将m和 ( r , s ) (r,s) (r,s)送给对方

验证

  1. 收到消息 m m m和签名 ( r , s ) (r,s) (r,s)
  2. 计算 H ( m ) H(m) H(m)
  3. 计算 w ′ = g s y − r   m o d   p w' = g^s y^{-r}\ mod\ p w=gsyr mod p
  4. 计算 H ( w ′ ∣ ∣ m ) H(w'||m) H(w∣∣m)
  5. 验证 H ( w ′ ∣ ∣ m ) = r , 即 V e r ( y , ( e , s ) , m ) = t r u e H(w'||m) = r, 即Ver(y,(e,s),m) = true H(w∣∣m)=r,Ver(y,(e,s),m)=true

安全性

Schnorr与ElGamal区别

  1. E体制中,g是 Z p Z_p Zp本原元素;S体制中,g是 Z p ∗ Z_p^* Zp中子集 Z q ∗ Z_q^* Zq的本原元,它不是 Z p ∗ 的本原元 Z_p^*的本原元 Zp的本原元
  2. S的签名比E短,由 ∣ q ∣ |q| q ∣ H ( m ) ∣ |H(m)| H(m)决定
  3. w = g k   m o d   p w = g^k\ mod\ p w=gk mod p可以预先计算,签名要一次乘法、一次加法,签名速度快,适合智能卡应用
  4. S签名短,安全性逊于E签名

DSS签名体制

DSA事故DSS签名标准中采用的数字签名算法

参数

  • p 大素数, 2 L − 1 < p < 2 L 2^L-1<p<2^L 2L1<p<2L, 512 ≤ L ≤ 1024 512\le L \le 1024 512L1024
  • q:(p-1)的素因子,且 2 159 < q < 2 160 2^{159}<q<2^{160} 2159<q<2160 字长160b
  • g g = h ( p − 1 ) / q   m o d   p g=h^{(p-1)/q}\ mod\ p g=h(p1)/q mod p
  • x 用户私钥 1 < x < q 1 < x < q 1<x<q
  • y 用户公钥 y = g x   m o d   p y = g^x\ mod\ p y=gx mod p
    p,q,g,y公钥,x是私钥

签名

  1. user使用随机数
  2. 计算 H ( m ) H(m) H(m)
  3. 计算 r = ( g k   m o d   p )   m o d   q r = (g^k\ mod\ p)\ mod\ q r=(gk mod p) mod q
  4. 计算 s = [ k − 1 ( H ( m ) + x r ) ]   m o d   q s = [k^{-1}(H(m)+xr)]\ mod\ q s=[k1(H(m)+xr)] mod q
  5. 签名 S i g k ( m ) = ( r , s ) Sig_k(m) = (r,s) Sigk(m)=(r,s) 将m和(r,s)送给对方

验证

  1. 收到m与(r,s)
  2. H ( m ) H(m) H(m)
  3. w = s − 1   m o d   q w=s^{-1}\ mod\ q w=s1 mod q
  4. u 1 = [ H ( m ) w ]   m o d   q u_1 = [H(m)w]\ mod\ q u1=[H(m)w] mod q
  5. u 2 = r w   m o d   q u_2 = rw\ mod\ q u2=rw mod q
  6. v = [ ( g u 1 y u 2 )   m o d   p ]   m o d   q v = [(g^{u1}y^{u2})\ mod\ p]\ mod\ q v=[(gu1yu2) mod p] mod q
  7. 验证 v = r v = r v=r

在这里插入图片描述

在这里插入图片描述

ESIGN

  1. n, n = p 2 q n = p^2q n=p2q大合数,公钥
  2. p,q 两个大素数
  3. M 消息空间
  4. S 命名空间
  5. k 安全参数

签名

  1. 选择随机数 $ 0<r<pq $
  2. 计算 H ( M ) H(M) H(M)
  3. 计算 w = 大于等于 [ ( H ( M ) − r k )   m o d   n ] / p q w = 大于等于[(H(M) - r^k)\ mod\ n]/ pq w=大于等于[(H(M)rk) mod n]/pq的最小整数
  4. 计算 s = r + [ ( w / k r k − 1   m o d   p ) ] × p q s = r + [(w/kr^{k-1}\ mod\ p)]\times pq s=r+[(w/krk1 mod p)]×pq
  5. S i g k ( M , k ) = s Sig^{k}(M,k)=s Sigk(M,k)=s作为签名,M和s送给对方

验证

  1. 收到M和s
  2. 计算 H ( M ) H(M) H(M)
  3. 计算 s r k   m o d   p s^{rk}\ mod\ p srk mod p
  4. 计算 a,它是大于等于 2 n / 3 2n/3 2n/3最小整数
  5. 验证 V e r k ( H ( M ) , s ) = t r u e ⇔ H ( M ) ≤ s k ∧ s k   m o d   n < H ( M ) + 2 a Ver_k(H(M),s) = true \Leftrightarrow H(M)\le s^k \land s^k\ mod\ n < H(M) + 2^a Verk(H(M),s)=trueH(M)sksk mod n<H(M)+2a

算法可以用预计算提高签名速度
发送方预计算: u = r k   m o d   n v = 1 / ( k r k − 1 )   m o d   p u = r^k\ mod\ n\quad v = 1/(kr^{k-1})\ mod\ p u=rk mod nv=1/(krk1) mod p

计算w:w = 大于等于 [ H ( M ) − u   m o d   n ] / p q [H(M)-u\ mod\ n]/pq [H(M)u mod n]/pq的最小整数


计算s s = r + ( w v   m o d   p ) × p q s = r + (wv\ mod\ p)\times pq s=r+(wv mod p)×pq

通过预先计算,让速度提高十倍。K = 2,3会被破解,建议k = 8,16,32,64,128,256,1024

Okamoto

  1. p,q: 大素数,p至少512bit
  2. q: (p-1)的素因子,q长约140bit
  3. g1,g2:全局公钥,与q同长
  4. s1,s2:秘钥,与q同长
  5. M: 消息空间 M ∈ Z P ∗ M\in Z^*_{P} MZP
  6. S: 签名空间 Z P ∗ × Z P − 1 Z_P^*\times Z_{P-1} ZP×ZP1
  7. v: 用户公钥 v = g 1 − s 1 g 2 − s 2   m o d   p v = g_1^{-s1}g_2^{-s2}\ mod\ p v=g1s1g2s2 mod p
  8. p,q,g1,g2,v公钥, s1,s2密钥

如何签名?

  1. 选随机数 r1,r2, 满足 0 < r 1 , r 2 < q 0 <r_1,r_2<q 0<r1,r2<q
  2. e = H ( g 1 r 1 g 2 r 2   m o d   p , M ) e = H(g_1^{r_1}g_2^{r_2}\ mod\ p, M) e=H(g1r1g2r2 mod p,M)
  3. y 1 = ( r 1 + e s 1 )   m o d   q y_1 = (r_1 + es_1)\ mod\ q y1=(r1+es1) mod q
  4. y 2 = ( r 2 + e s 2 )   m o d   q y_2 = (r_2 + es_2)\ mod\ q y2=(r2+es2) mod q
  5. S i g k ( M , k ) = S = ( e , y 1 , y 2 ) Sig_k(M,k)=S=(e,y_1,y_2) Sigk(M,k)=S=(e,y1,y2)做签名,M和S送给对方

g 1 y 1 g 2 y 2 v e   m o d   p = g 1 r 1 e s 1 g 2 r 2 r s 2 ( g 1 − s 1 g 2 − s 2 ) e   m o d   p = g 1 r 1 g 2 r 2   m o d   p g_1^{y_1}g_2^{y_2}v^e\ mod\ p \\ =g_1^{r_1es_1}g_2^{r_2rs_2}(g_1^{-s1}g_2^{-s_2}) ^e\ mod\ p \\ = g_1^{r_1}g_2^{r_2}\ mod\ p g1y1g2y2ve mod p=g1r1es1g2r2rs2(g1s1g2s2)e mod p=g1r1g2r2 mod p

所以
H ( g 1 y 1 g 2 y 2 v e   m o d   p , M ) = H ( g 1 r 1 g 2 r 2   m o d   p , M ) = e H(g_1^{y_1}g_2^{y_2}v^e\ mod\ p, M) = H(g_1^{r_1}g_2^{r_2}\ mod\ p, M) = e H(g1y1g2y2ve mod p,M)=H(g1r1g2r2 mod p,M)=e

OSS签名体制

  1. n 大整数
  2. k 随机数,满足(k, n) = 1
  3. h 满足 h = − k − 2   m o d   n h = -k^{-2}\ mod\ n h=k2 mod n
  4. M: 消息空间 M ∈ Z P ∗ M\in Z^*_{P} MZP
  5. S: 签名空间 Z P ∗ × Z P ∗ Z_P^*\times Z_{P}^* ZP×ZP
  6. h,n是公钥,k是密钥

签名过程

  1. 选随机数r满足(r, n) = 1
  2. 计算 s 1 = ( M / r + r ) / 2   m o d   n s_1 =(M/r + r)/2\ mod\ n s1=(M/r+r)/2 mod n
  3. 计算 s 2 = k ( M / r − r ) / 2   m o d   n s_2 =k(M/r - r)/2\ mod\ n s2=k(M/rr)/2 mod n
  4. S i g k ( M , k ) = S = ( s 1 , s 2 ) Sig_k(M,k) = S = (s_1,s_2) Sigk(M,k)=S=(s1,s2)

验证过程

  1. 收到M和 ( s 1 , s 2 ) (s_1,s_2) (s1,s2)
  2. 计算 M ′ = s 1 2 + h × s + 2 2   m o d   n M^{'} = s_1^2+h\times s+2^2\ mod\ n M=s12+h×s+22 mod n
  3. 验证 V e r k ( H ( M ) , r , s ) = t r u e ⇔ M = M ′ Ver_k(H(M), r, s) = true \Leftrightarrow M = M^{'} Verk(H(M),r,s)=trueM=M

缺陷:
对于二次,三次多项式构造的签名并不安全
四次多项式已被拱北
ESIGN在OSS上提出的新方案

离散对数

  1. p: 大素数
  2. q: (p-1)的素因子
  3. g: g ∈ Z P ∗ ∧ g q = 1   m o d   p g\in Z_P^* \land g^q=1\ mod\ p gZPgq=1 mod p
  4. M: 消息空间 M ∈ Z P ∗ M\in Z^*_{P} MZP
  5. S: 签名空间
  6. x: 用户密钥, 1 < x < q 1< x<q 1<x<q
  7. y:用户公钥 y = g x   m o d   p y = g^x\ mod\ p y=gx mod p

p,q,g,y公钥,x密钥

签名过程

  1. 选择随机数k, 0 < k < q 0<k<q 0<k<q
  2. 计算H(m)
  3. 计算 r = g k   m o d   p r = g^k\ mod\ p r=gk mod p
  4. 签字 a k = b + c x   m o d   q ak = b + cx\ mod\ q ak=b+cx mod q
  5. S i g k ( m ) = ( r , s ) Sig_k(m) = (r,s) Sigk(m)=(r,s)作为签名,将m和(r,s)送给对方

验证

  1. 收到m和(r,s)
  2. V e r ( M , r , s ) = t r u e ⇔ r a = g b y c   m o d   q Ver(M,r,s) = true \Leftrightarrow r^a=g^by^c\ mod\ q Ver(M,r,s)=truera=gbyc mod q

以上签名可以看作其特例

abc对应体制
± r ± r ±r ± s ±s ±s ± H ( m ) ±H(m) ±H(m)Yen; Laih
± r ± r ±r ± H ( m ) ±H(m) ±H(m) ± s ±s ±sAgnew; Yen
± s ±s ±s ± r ± r ±r ± H ( m ) ±H(m) ±H(m)
± s ±s ±s ± H ( m ) ±H(m) ±H(m) ± r ± r ±rElGamal; DSA
± H ( m ) ±H(m) ±H(m) ± s ±s ±s ± r ± r ±rSchonorr; Nyberg
± H ( m ) ±H(m) ±H(m) ± r ± r ±r ± s ±s ±s

11. 其他签名

  1. 不可否认签名
  2. 防失败签名 fail-stop signature
  3. 盲签名 blind signature
  4. 群签名 group signature (代表一个群体,匿名)
  5. 代理签名 proxy
  6. 指定证实人签名 designate confirmer signature
  7. 一次性签名 one time

消息认证码MAC基本用途

  1. 消息认证
  2. 消息认证与保密:计算MAC后加密
  3. 消息认证与保密:先加密后计算MAC

与杂凑算法/加密/签名结合方案

  1. 保密性 + 消息认证
  2. 仅消息认证
  3. 即消息认证,也有数字签名
  4. 提供保密性,消息认证,数字签名

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

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

相关文章

Django框架之视图HttpRequest对象

本文主要是记录视图的HttpRequest对象属性、方法及示例。 概述 服务器接受http请求后&#xff0c;会根据报文创建httpRequest对象&#xff0c;包含所有请求中必须的数据&#xff1b; 视图方法的第一个参数就是HttpRequest对象&#xff1b;Django创建对象后&#xff0c;调用视…

本地提权漏洞分析【网络安全】

0. 前言 CVE-2023-21752 是 2023 年开年微软第一个有 exploit 的漏洞&#xff0c;原本以为有利用代码会很好分析&#xff0c;但是结果花费了很长时间&#xff0c;难点主要了两个&#xff1a;漏洞点定位和漏洞利用代码分析&#xff0c;欢迎指正。 1. 漏洞简介 根据官方信息&a…

chatgpt中文意思——预训练生成聊天模型

"ChatGPT"相关的英文表达 ChatGPT 这个名字由两部分组成&#xff1a;Chat 和 GPT。 Chat 是聊天&#xff0c;而GPT是Generative Pretrained Transformer的缩写&#xff1a;预训练生成模型。因此&#xff0c;ChatGPT的意思是预训练生成聊天模型。 简单来说就是一个预先…

第五十一章 Unity Input Manager 输入系统(下)

本章节我们就来使用水平轴和垂直轴来控制游戏物体的移动和旋转。我们之前大致讲过&#xff0c;游戏物体移动最重要的是方向&#xff0c;速度和时间三个要素&#xff0c;同样旋转也是。接下来&#xff0c;我们将之前创建的地形场景导入进来&#xff0c;如下所示 然后将之前的“M…

OpenAI又火一个新项目,已开源...

大家好&#xff0c;我是 Jack。 OpenAI 又有新动作了&#xff0c;开源发布 Shap-E。 今天&#xff0c;我继续手把手教学。 算法原理、环境搭建、效果测试&#xff0c;一条龙服务&#xff0c;尽在下文&#xff01; 一、Shap-E 效果 Shap-E 算法的功能&#xff0c;简单来讲就…

第五十二章 Unity Input System 新输入系统

新输入系统InputSystem是2019年Unity新推出的插件。请注意&#xff0c;Unity默认使用旧的Input Manager&#xff0c;新的Input System处于未启用状态。当你安装Input System组件时&#xff0c;Unity会询问你是否启用新的输入系统。如果你选择Yes&#xff0c;Unity会启用新的并禁…

8通道高速同步采集板卡设计原理图与调试经验中文资料分享

采集卡实物图及功能框图如下 青翼型号-FMC128 FMC128功能框图 FMC148实物图 FMC148功能框图 FMC168实物图 FMC168功能框图 板卡对比如下图 青翼型号 通道数 采集分辨率 采样率 FMC1288通道16bit250MSPSFMC14814bit500MSPS/1GSPS/1.25GSPSFMC1682GSPS/2.6GSPS/3GSPS 技术指标FM…

Android 套壳本地html 生成apk

参考了:https://www.jianshu.com/p/ebf7948f3796 首页是前端会给到你html文件 目录基本上是这样的 image.png 步骤1: 创建assets目录 用户安卓studio 新合建工程就不写了 &#xff0c;下面的图是如何创建assets资源目录&#xff1a; image.png image.png 步骤2&#xff1a;拷贝…

JVM-类加载机制

类的生命周期 ​ 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中&#xff0c;加载、验证、准备和初始化这四个阶段发生的顺序是确定的&#xff0c;而解析阶段则不一定&#xff0c;**它在某些情况下可以在初始化阶段之后开始&#xff0c;这是为…

ext-5 void GPIO1Pin23PinMuxSetup(void)含义

在阅读starterware里控制led的代码&#xff0c;GPIO初始化有个这个函数 void GPIO1Pin23PinMuxSetup(void) {HWREG(SOC_CONTROL_REGS CONTROL_CONF_GPMC_A(7)) CONTROL_CONF_MUXMODE(7); } 如果不熟悉可能看的一头雾水&#xff0c;这个含义是&#xff1a; 解释一下&#xff…

【Nginx】Nginx面试题

什么是Nginx&#xff1f; Nginx是一个 轻量级/高性能的反向代理Web服务器&#xff0c;用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。他实现非常高效的反向代理、负载平衡&#xff0c;他可以处理2-3万并发连接数&#xff0c;官方监测能支持5万并发&#xff0c;现在中国使用ngin…

U-boot常用命令(二)

FAT格式文件系统操作命令 有时候需要在uboot中对SD卡或EMMC中存储的文件进行操作&#xff0c;这时候就要用到文件操作命令。跟文件操作相关的命令有&#xff1a;fatinfo、fatls、fstype、fatload 和 fatwrite&#xff0c;但是这些文件操作命令只支持 FAT 格式的文件系统&#…

PCA(Principal Component Analysis,主成分分析)降维

1.PCA介绍 来源&#xff1a;视频https://www.bilibili.com/video/BV1E5411E71z/ 笔记&#xff1a;https://www.bilibili.com/read/cv23587690?spm_id_from333.999.0.0&jump_opus1 PCA就是找坐标系&#xff0c;使得数据在保留一维数据&#xff0c;损失是最小的。 目标&a…

Aescripts StyleX for AE(AI技术风格化插件)

Aescripts StyleX一款非常实用的视频风格和效果自动化处理插件&#xff0c;它提供了多种风格和效果、自动化处理、可自定义选项、支持多种分辨率、简单易用的界面和工具等功能&#xff0c;让用户可以轻松地为视频添加不同的风格和效果&#xff0c;并提高效率和准确性。StyleX 插…

基于STM32+RC522设计的门禁系统

一、项目背景 门禁系统是现代社会中非常重要的安全控制系统之一,其功能是在保障建筑物安全的同时,为合法用户提供便利。当前设计一种基于STM32+RC522的门禁系统设计方案,通过RFID-RC522模块实现了对用户卡的注册、识别及身份验证,通过控制SG90舵机实现门锁的开关,具有较高…

物联网架构和技术:如何实现物物互联和智能化控制

第一章&#xff1a;引言 物联网是一种新兴的技术领域&#xff0c;通过将物理设备、传感器和软件等连接起来&#xff0c;可以实现设备之间的互联互通&#xff0c;让各种设备可以进行数据交换和智能化控制。在这个数字化时代&#xff0c;物联网已经成为了连接万物的关键技术之一…

WiFi(Wireless Fidelity)基础(五)

目录 一、基本介绍&#xff08;Introduction&#xff09; 二、进化发展&#xff08;Evolution&#xff09; 三、PHY帧&#xff08;&#xff08;PHY Frame &#xff09; 四、MAC帧&#xff08;MAC Frame &#xff09; 五、协议&#xff08;Protocol&#xff09; 六、安全&#x…

程序设计入门——C语言 2023年5月9日

程序设计入门——C语言 一、基础理解1、什么是计算机&#xff1f;如何用计算机做事情&#xff1f;什么是应用软件&#xff1f;编程语言干啥的&#xff1f;计算机与人脑&#xff1f;学习编程能干啥&#xff1f;2、计算机-程序-算法3、解释语言vs编译语言 课程来源&#xff1a;链…

测试老鸟总结,性能测试常见瓶颈分析与调优,“我“也要卷出测试圈...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 性能测试过程中&a…

KingbaseES V8R3 集群运维系列 -- failover切换后集群自动恢复

​ 案例说明&#xff1a; KingbaseES V8R3集群默认在触发failover切换后&#xff0c;为保证数据安全&#xff0c;原主库需要通过人工介入后&#xff0c;恢复为新的备库加入到集群。在无人值守的现场环境&#xff0c;需要在触发failover切换后&#xff0c;主库可以自动恢复为新备…