<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://en.zaoniao.it/index.php?action=history&amp;feed=atom&amp;title=Schnorr</id>
	<title>Schnorr - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://en.zaoniao.it/index.php?action=history&amp;feed=atom&amp;title=Schnorr"/>
	<link rel="alternate" type="text/html" href="http://en.zaoniao.it/index.php?title=Schnorr&amp;action=history"/>
	<updated>2026-05-15T09:37:33Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>http://en.zaoniao.it/index.php?title=Schnorr&amp;diff=6731&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;'''Schnorr''' signatures are a proposed future extension that give a new way to generate signatures r, s on a hash h.  Given a hash value h, hash function f(), private key x,...&quot;</title>
		<link rel="alternate" type="text/html" href="http://en.zaoniao.it/index.php?title=Schnorr&amp;diff=6731&amp;oldid=prev"/>
		<updated>2019-07-10T06:04:21Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Schnorr&amp;#039;&amp;#039;&amp;#039; signatures are a proposed future extension that give a new way to generate signatures r, s on a hash h.  Given a hash value h, hash function f(), private key x,...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Schnorr''' signatures are a proposed future extension that give a new way to generate signatures r, s on a hash h.&lt;br /&gt;
&lt;br /&gt;
Given a hash value h, hash function f(), private key x, group generator G, and public key P=xG, we can generate a Schnorr signature on h as follows:&lt;br /&gt;
&lt;br /&gt;
Choose a random nonce k. Let R=Gk, and let s = k - f(h . R . P)x. The Schnorr signature is the pair (R, s). Note that R is a public key, so would require 33 bytes to represent (32 bytes + 1 bit indicating &amp;quot;even&amp;quot; vs &amp;quot;odd&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
To check the validity of a signature (R, s) against a public key P, do the following:&lt;br /&gt;
&lt;br /&gt;
Note that sG = (k- f(h . R . P))G = kG - f(h . R . P)xG = R - f(h . R . P)P. So we simply compare sG + f(h . R . P)P to R to check the signature.&lt;br /&gt;
&lt;br /&gt;
An advantage of this method is that, if parties cooperate, we can generate a single signature that validates two or more separate transactions.&lt;br /&gt;
&lt;br /&gt;
Choose h1, h2, x1, x2, G, P1=Gx1, P2=Gx2. Each party chooses a nonce yielding k1 and k2, and publicly shares R1=Gk1, R2=Gk2.&lt;br /&gt;
&lt;br /&gt;
Let R = R1+R2. Each signer generates an s, s1 = k1 - f(h . R . P)x1, s2 = k2 - f(h . R . P)x2. The signature (R, s) where s = s1 + s2 proves both transactions are signed.&lt;br /&gt;
&lt;br /&gt;
Note that sG = (s1 + s2)G = s1G + s2G = (k1 - f(h . R . P)x1)G + (k2 - f(h . R . P)x2)G = k1G - f(h . R . P)x1G + k2G - f(h . R . P)x2G = R1 + R2 - f(h . R . P)(P1 + P2) = R - f(h . R . P)(P1 + P2)&lt;br /&gt;
&lt;br /&gt;
To verify, check that sG +f(h . R . P)(P1+P2) is R.&lt;br /&gt;
&lt;br /&gt;
This can be easily generalized from 2 to N.&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
&lt;br /&gt;
[http://bitcoin.it/ http://bitcoin.it/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cryptography]]&lt;br /&gt;
[[Category:Technology]]&lt;br /&gt;
==See Also on BitcoinWiki==&lt;br /&gt;
* [[AITrading]]&lt;br /&gt;
* [[ACA Network]]&lt;br /&gt;
* [[Photochain]]&lt;br /&gt;
* [[Habibicoin]]&lt;br /&gt;
* [[IOTW]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>