<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Crypto++ ElGamal-Verschlüsselung]]></title><description><![CDATA[<p>Hi,</p>
<p>ich versuche gerade mit der Crypto++-Library Daten mit ElGamal zu ver/entschlüsseln. Wenn ich jedoch eine von Crypto++ verschlüsselte Nachricht entschlüsseln will, ist das Result leider nur eine Folge von Nullen. Leider ist Crypto++ scheinbar nur sehr schlecht dokumentiert, eine Dokumentation zu ElGamal habe ich garnicht gefunden.<br />
Kann mir hier irgendwer helfen?</p>
<pre><code class="language-cpp">// RFC 5114 1024-bit Keys: http://tools.ietf.org/html/rfc5114

CryptoPP::Integer p(&quot;0xB10B8F96A080E01DDE92DE5EAE5D54EC52C99FBCFB06A3C6&quot;
		    &quot;9A6A9DCA52D23B616073E28675A23D189838EF1E2EE652C0&quot;
		    &quot;13ECB4AEA906112324975C3CD49B83BFACCBDD7D90C4BD70&quot;
		    &quot;98488E9C219A73724EFFD6FAE5644738FAA31A4FF55BCCC0&quot;
		    &quot;A151AF5F0DC8B4BD45BF37DF365C1A65E68CFDA76D4DA708&quot;
		    &quot;DF1FB2BC2E4A4371&quot;);

CryptoPP::Integer g(&quot;0xA4D1CBD5C3FD34126765A442EFB99905F8104DD258AC507F&quot;
		    &quot;D6406CFF14266D31266FEA1E5C41564B777E690F5504F213&quot;
		    &quot;160217B4B01B886A5E91547F9E2749F4D7FBD7D3B9A92EE1&quot;
		    &quot;909D0D2263F80A76A6A24C087A091F531DBF0A0169B6A28A&quot;
		    &quot;D662A4D18E73AFA32D779D5918D08BC8858F4DCEF97C2A24&quot;
		    &quot;855E6EEB22B3B2E5&quot;);

CryptoPP::Integer q(&quot;0xF518AA8781A8DF278ABA4E7D64B7CB9D49462353&quot;);

CryptoPP::AutoSeededRandomPool rnd;
CryptoPP::Integer x(rnd, 1, q); // private key

CryptoPP::Integer y = CryptoPP::ModularExponentiation(g, x, p);

CryptoPP::ElGamalKeys::PublicKey pubkey;
pubkey.Initialize(p, q, g, y);
CryptoPP::ElGamalKeys::PrivateKey privkey;
privkey.Initialize(p, q, g, x);

std::uint8_t plain[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' };
CryptoPP::ElGamalEncryptor encryptor(pubkey);
std::vector&lt;std::uint8_t&gt; encrypted(500);
encryptor.Encrypt(rnd, plain, sizeof(plain), &amp;encrypted[0]);

std::vector&lt;std::uint8_t&gt; decrypted(encrypted.size());
CryptoPP::ElGamalDecryptor decryptor(privkey);
decryptor.Decrypt(rnd, &amp;encrypted[0], encrypted.size(), &amp;decrypted[0]);

for(std::uint8_t c : decrypted)
	std::cout &lt;&lt; (char) c;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/315679/crypto-elgamal-verschlüsselung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 31 Jul 2026 03:31:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/315679.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Apr 2013 08:49:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Crypto++ ElGamal-Verschlüsselung on Tue, 09 Apr 2013 08:49:46 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich versuche gerade mit der Crypto++-Library Daten mit ElGamal zu ver/entschlüsseln. Wenn ich jedoch eine von Crypto++ verschlüsselte Nachricht entschlüsseln will, ist das Result leider nur eine Folge von Nullen. Leider ist Crypto++ scheinbar nur sehr schlecht dokumentiert, eine Dokumentation zu ElGamal habe ich garnicht gefunden.<br />
Kann mir hier irgendwer helfen?</p>
<pre><code class="language-cpp">// RFC 5114 1024-bit Keys: http://tools.ietf.org/html/rfc5114

CryptoPP::Integer p(&quot;0xB10B8F96A080E01DDE92DE5EAE5D54EC52C99FBCFB06A3C6&quot;
		    &quot;9A6A9DCA52D23B616073E28675A23D189838EF1E2EE652C0&quot;
		    &quot;13ECB4AEA906112324975C3CD49B83BFACCBDD7D90C4BD70&quot;
		    &quot;98488E9C219A73724EFFD6FAE5644738FAA31A4FF55BCCC0&quot;
		    &quot;A151AF5F0DC8B4BD45BF37DF365C1A65E68CFDA76D4DA708&quot;
		    &quot;DF1FB2BC2E4A4371&quot;);

CryptoPP::Integer g(&quot;0xA4D1CBD5C3FD34126765A442EFB99905F8104DD258AC507F&quot;
		    &quot;D6406CFF14266D31266FEA1E5C41564B777E690F5504F213&quot;
		    &quot;160217B4B01B886A5E91547F9E2749F4D7FBD7D3B9A92EE1&quot;
		    &quot;909D0D2263F80A76A6A24C087A091F531DBF0A0169B6A28A&quot;
		    &quot;D662A4D18E73AFA32D779D5918D08BC8858F4DCEF97C2A24&quot;
		    &quot;855E6EEB22B3B2E5&quot;);

CryptoPP::Integer q(&quot;0xF518AA8781A8DF278ABA4E7D64B7CB9D49462353&quot;);

CryptoPP::AutoSeededRandomPool rnd;
CryptoPP::Integer x(rnd, 1, q); // private key

CryptoPP::Integer y = CryptoPP::ModularExponentiation(g, x, p);

CryptoPP::ElGamalKeys::PublicKey pubkey;
pubkey.Initialize(p, q, g, y);
CryptoPP::ElGamalKeys::PrivateKey privkey;
privkey.Initialize(p, q, g, x);

std::uint8_t plain[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' };
CryptoPP::ElGamalEncryptor encryptor(pubkey);
std::vector&lt;std::uint8_t&gt; encrypted(500);
encryptor.Encrypt(rnd, plain, sizeof(plain), &amp;encrypted[0]);

std::vector&lt;std::uint8_t&gt; decrypted(encrypted.size());
CryptoPP::ElGamalDecryptor decryptor(privkey);
decryptor.Decrypt(rnd, &amp;encrypted[0], encrypted.size(), &amp;decrypted[0]);

for(std::uint8_t c : decrypted)
	std::cout &lt;&lt; (char) c;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2313965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2313965</guid><dc:creator><![CDATA[ElGamal]]></dc:creator><pubDate>Tue, 09 Apr 2013 08:49:46 GMT</pubDate></item></channel></rss>