數(shù)字簽名(又稱(chēng)公鑰數(shù)字簽名,英語(yǔ):Digital Signature)是一種類(lèi)似寫(xiě)在紙上的普通的物理簽名,但是使用了公鑰加密領(lǐng)域的技術(shù)實(shí)現(xiàn)鸭津,用于鑒別數(shù)字信息的方法。
公開(kāi)密鑰加密(英語(yǔ):Public-key cryptography)肠缨,也稱(chēng)為非對(duì)稱(chēng)加密(英語(yǔ):asymmetric cryptography)逆趋,是密碼學(xué)的一種算法,它需要兩個(gè)密鑰晒奕,一個(gè)是公開(kāi)密鑰闻书,另一個(gè)是私有密鑰;一個(gè)用作加密的時(shí)候脑慧,另一個(gè)則用作解密魄眉。使用其中一個(gè)密鑰把明文加密后所得的密文,只能用相對(duì)應(yīng)的另一個(gè)密鑰才能解密得到原本的明文闷袒;甚至連最初用來(lái)加密的密鑰也不能用作解密坑律。由于加密和解密需要兩個(gè)不同的密鑰,故被稱(chēng)為非對(duì)稱(chēng)加密囊骤。
? ? 使用:
? ??????如果任何人使用公鑰加密明文脾歇,得到的密文可以透過(guò)不安全的途徑(如網(wǎng)上)發(fā)送,只有對(duì)應(yīng)的私鑰持有者才可以解密得到明文淘捡;其他人即使從網(wǎng)上上竊取到密文及加密公鑰,也無(wú)法(在數(shù)以年計(jì)的合理時(shí)間內(nèi))解密得出明文池摧。
? ??????相反焦除,如果某一用戶(hù)使用他的私鑰加密明文,任何人都可以用該用戶(hù)的公鑰解密密文作彤;由于私鑰只由該用戶(hù)自己持有膘魄,故可以肯定該文件必定出自于該用戶(hù);公眾可以驗(yàn)證該用戶(hù)發(fā)布的數(shù)據(jù)或文件是否完整竭讳、中途有否曾被篡改创葡,接收者可信賴(lài)這條信息確實(shí)來(lái)自于該用戶(hù),該用戶(hù)亦無(wú)法抵賴(lài)绢慢,這被稱(chēng)作數(shù)字簽名灿渴,大部分國(guó)家已經(jīng)立法承認(rèn)數(shù)字簽名擁有等同傳統(tǒng)親筆簽名的法律效力。
那么比特幣網(wǎng)絡(luò)中的數(shù)字簽名是怎么實(shí)現(xiàn)的胰舆?
? ? 比特幣在實(shí)現(xiàn)數(shù)字簽名實(shí)際使用的是一種非對(duì)稱(chēng)加密算法骚露,橢圓曲線數(shù)字簽名算法(ECDSA)
? ??用戶(hù)的密鑰對(duì):(d, Q);(d為私鑰缚窿,Q為公鑰)?
????待簽名的信息:M棘幸;?
????簽名:Signature(M) = (r, s);
簽名過(guò)程:
????1倦零、根據(jù)ECC算法隨機(jī)生成一個(gè)密鑰對(duì)(k, R), R=(xR, yR)?
????2误续、令 r = xR mod n吨悍,如果r = 0,則返回步驟1?
????3蹋嵌、計(jì)算 H = Hash(M)?
????4育瓜、按照數(shù)據(jù)類(lèi)型轉(zhuǎn)換規(guī)則,將H轉(zhuǎn)化為一個(gè)big endian的整數(shù)e?
????5欣尼、s = k^-1 (e + rd) mod n爆雹,若s = 0, 則返回步驟1?
????6、輸出的S =(r,s)即為簽名愕鼓。
驗(yàn)證過(guò)程:
????1钙态、 計(jì)算 H = Hash(M)?
????2、按照數(shù)據(jù)類(lèi)型轉(zhuǎn)換規(guī)則菇晃,將H轉(zhuǎn)化為一個(gè)big endian的整數(shù)e?
????3册倒、計(jì)算 u1 = es^-1 mod n, u2 = rs^-1 mod n?
????4、計(jì)算 R = (xR, yR) = u1G + u2Q, 如果R = 零點(diǎn)磺送,則驗(yàn)證該簽名無(wú)效?
????5驻子、令 v = xR mod n?
????6、若 v == r估灿,則簽名有效崇呵,若 v ≠ r, 則簽名無(wú)效。
這個(gè)是我從這里搬過(guò)來(lái)的馅袁,沒(méi)看懂域慷!https://www.8btc.com/article/63058