Math.Gmp.Native/docs/html/93210ab6-2523-3130-044a-80b...

80 lines
97 KiB
HTML
Raw Normal View History

<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>gmp_lib.mpz_powm_sec Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="mpz_powm_sec method" /><meta name="System.Keywords" content="gmp_lib.mpz_powm_sec method" /><meta name="Microsoft.Help.F1" content="Math.Gmp.Native.gmp_lib.mpz_powm_sec" /><meta name="Microsoft.Help.Id" content="M:Math.Gmp.Native.gmp_lib.mpz_powm_sec(Math.Gmp.Native.mpz_t,Math.Gmp.Native.mpz_t,Math.Gmp.Native.mpz_t,Math.Gmp.Native.mpz_t)" /><meta name="Description" content="Set to (^) modulo ." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Math.Gmp.Native" /><meta name="file" content="93210ab6-2523-3130-044a-80bcf43c181d" /><meta name="guid" content="93210ab6-2523-3130-044a-80bcf43c181d" /><link type="text/css" rel="stylesheet" href="../styles/highlight.css" /><script type="text/javascript" src="../scripts/highlight.js"> </script><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script><script type="text/javascript" src="../scripts/clipboard.min.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">GMP Native Interface for .NET<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="846f5c8a-6cba-433e-9f18-cde2ff5695cd.htm" title="GMP Native Interface for .NET" tocid="roottoc">GMP Native Interface for .NET</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="d9c51b9f-0c54-770b-28ea-6eebd8fef368.htm" title="Math.Gmp.Native" tocid="d9c51b9f-0c54-770b-28ea-6eebd8fef368">Math.Gmp.Native</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="3af6b34c-3242-2b75-e7c7-ab79af8a4b0f.htm" title="gmp_lib Class" tocid="3af6b34c-3242-2b75-e7c7-ab79af8a4b0f">gmp_lib Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="0fa7cbf3-e8f4-6b14-d829-8aa663e77c74.htm" title="gmp_lib Methods" tocid="0fa7cbf3-e8f4-6b14-d829-8aa663e77c74">gmp_lib Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="c9cb6a67-59b8-5c03-f31d-f252441c53f6.htm" title="_mpz_realloc Method " tocid="c9cb6a67-59b8-5c03-f31d-f252441c53f6">_mpz_realloc Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="2c68671c-cd5c-e2ec-52a2-65b0ca31c3d1.htm" title="allocate Method " tocid="2c68671c-cd5c-e2ec-52a2-65b0ca31c3d1">allocate Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="92160da3-b1af-e005-cb05-e3fb4dd524d8.htm" title="free Method " tocid="92160da3-b1af-e005-cb05-e3fb4dd524d8">free Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="fe6e
2017-11-08 01:29:10 +01:00
Set <span class="parameter">rop</span> to (<span class="parameter">base</span>^<span class="parameter">exp</span>) modulo <span class="parameter">mod</span>.
2017-11-04 16:02:37 +01:00
</div><p> </p>
<strong>Namespace:</strong>
 <a href="d9c51b9f-0c54-770b-28ea-6eebd8fef368.htm">Math.Gmp.Native</a><br />
<strong>Assembly:</strong>
 Math.Gmp.Native (in Math.Gmp.Native.dll) Version: 1.0.0.0 (1.0.0.0)<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">mpz_powm_sec</span>(
<span class="identifier">mpz_t</span> <span class="parameter">rop</span>,
<span class="identifier">mpz_t</span> <span class="parameter">base</span>,
<span class="identifier">mpz_t</span> <span class="parameter">exp</span>,
<span class="identifier">mpz_t</span> <span class="parameter">mod</span>
)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Sub</span> <span class="identifier">mpz_powm_sec</span> (
<span class="parameter">rop</span> <span class="keyword">As</span> <span class="identifier">mpz_t</span>,
<span class="parameter">base</span> <span class="keyword">As</span> <span class="identifier">mpz_t</span>,
<span class="parameter">exp</span> <span class="keyword">As</span> <span class="identifier">mpz_t</span>,
<span class="parameter">mod</span> <span class="keyword">As</span> <span class="identifier">mpz_t</span>
)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>:
<span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">mpz_powm_sec</span>(
<span class="identifier">mpz_t</span>^ <span class="parameter">rop</span>,
<span class="identifier">mpz_t</span>^ <span class="parameter">base</span>,
<span class="identifier">mpz_t</span>^ <span class="parameter">exp</span>,
<span class="identifier">mpz_t</span>^ <span class="parameter">mod</span>
)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">mpz_powm_sec</span> :
<span class="parameter">rop</span> : <span class="identifier">mpz_t</span> *
<span class="parameter">base</span> : <span class="identifier">mpz_t</span> *
<span class="parameter">exp</span> : <span class="identifier">mpz_t</span> *
<span class="parameter">mod</span> : <span class="identifier">mpz_t</span> <span class="keyword">-&gt;</span> <span class="keyword">unit</span>
</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">rop</span></dt><dd>Type: <a href="8beda7fb-bbc4-b56f-fd1f-1459377ecb3b.htm">Math.Gmp.Native<span id="LST138B5890_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST138B5890_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mpz_t</a><br />The result integer.</dd><dt><span class="parameter">base</span></dt><dd>Type: <a href="8beda7fb-bbc4-b56f-fd1f-1459377ecb3b.htm">Math.Gmp.Native<span id="LST138B5890_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST138B5890_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mpz_t</a><br />The base integer.</dd><dt><span class="parameter">exp</span></dt><dd>Type: <a href="8beda7fb-bbc4-b56f-fd1f-1459377ecb3b.htm">Math.Gmp.Native<span id="LST138B5890_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST138B5890_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mpz_t</a><br />The exponent integer.</dd><dt><span class="parameter">mod</span></dt><dd>Type: <a href="8beda7fb-bbc4-b56f-fd1f-1459377ecb3b.htm">Math.Gmp.Native<span id="LST138B5890_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST138B5890_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mpz_t</a><br />The modulo integer.</dd></dl></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Remarks</span></div><div id="ID2RBSection" class="collapsibleSection"><p>
2017-11-08 01:29:10 +01:00
It is required that <span class="parameter">exp</span> &gt; 0 and that <span class="parameter">mod</span> is odd.
2017-11-04 16:02:37 +01:00
</p><p>
This function is designed to take the same time and have the same cache access patterns for any two same-size arguments,
assuming that function arguments are placed at the same position and that the machine state is identical upon function entry.
This function is intended for cryptographic purposes, where resilience to side-channel attacks is desired.
</p></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Examples</span></div><div id="ID3RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDAABA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDAABA','cs','1','4');return false;">C#</a></div><div id="ID0EDAABA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDAABA','vb','2','4');return false;">VB</a></div><div id="ID0EDAABA_tab3" class="codeSnippetContainerTabPhantom"><a href="#" onclick="javascript:ChangeTab('ID0EDAABA','cpp','3','4');return false;">C++</a></div><div id="ID0EDAABA_tab4" class="codeSnippetContainerTabPhantom"><a href="#" onclick="javascript:ChangeTab('ID0EDAABA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDAABA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EDAABA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDAABA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="highlight-comment">// Create, initialize, and set the value of base to 2.</span>
mpz_t @<span class="highlight-keyword">base</span> = <span class="highlight-keyword">new</span> mpz_t();
gmp_lib.mpz_init_set_ui(@<span class="highlight-keyword">base</span>, <span class="highlight-number">2</span>U);
<span class="highlight-comment">// Create, initialize, and set the value of exp to 4.</span>
mpz_t exp = <span class="highlight-keyword">new</span> mpz_t();
gmp_lib.mpz_init_set_ui(exp, <span class="highlight-number">4</span>U);
<span class="highlight-comment">// Create, initialize, and set the value of mod to 3.</span>
mpz_t mod = <span class="highlight-keyword">new</span> mpz_t();
gmp_lib.mpz_init_set_ui(mod, <span class="highlight-number">3</span>U);
<span class="highlight-comment">// Create, initialize, and set the value of rop to 0.</span>
mpz_t rop = <span class="highlight-keyword">new</span> mpz_t();
gmp_lib.mpz_init(rop);
<span class="highlight-comment">// Set rop = base^exp mod mod.</span>
gmp_lib.mpz_powm_sec(rop, @<span class="highlight-keyword">base</span>, exp, mod);
<span class="highlight-comment">// Assert that rop is 1.</span>
Assert.IsTrue(gmp_lib.mpz_get_si(rop) == <span class="highlight-number">1</span>);
<span class="highlight-comment">// Release unmanaged memory allocated for rop, base, exp, and mod.</span>
gmp_lib.mpz_clears(rop, @<span class="highlight-keyword">base</span>, exp, mod, <span class="highlight-keyword">null</span>);</pre></div><div id="ID0EDAABA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="highlight-comment">' Create, initialize, and set the value of base to 2.</span>
<span class="highlight-keyword">Dim</span> base <span class="highlight-keyword">As</span> <span class="highlight-keyword">New</span> mpz_t()
gmp_lib.mpz_init_set_ui(base, <span class="highlight-number">2</span>UI)
<span class="highlight-comment">' Create, initialize, and set the value of exp to 4.</span>
<span class="highlight-keyword">Dim</span> exp <span class="highlight-keyword">As</span> <span class="highlight-keyword">New</span> mpz_t()
gmp_lib.mpz_init_set_ui(exp, <span class="highlight-number">4</span>UI)
<span class="highlight-comment">' Create, initialize, and set the value of mod to 3.</span>
<span class="highlight-keyword">Dim</span>[<span class="highlight-keyword">mod</span>] <span class="highlight-keyword">As</span> <span class="highlight-keyword">New</span> mpz_t()
gmp_lib.mpz_init_set_ui([<span class="highlight-keyword">mod</span>], <span class="highlight-number">3</span>UI)
<span class="highlight-comment">' Create, initialize, and set the value of rop to 0.</span>
<span class="highlight-keyword">Dim</span> rop <span class="highlight-keyword">As</span> <span class="highlight-keyword">New</span> mpz_t()
gmp_lib.mpz_init(rop)
<span class="highlight-comment">' Set rop = base^exp mod mod.</span>
gmp_lib.mpz_powm_sec(rop, base, exp, [<span class="highlight-keyword">mod</span>])
<span class="highlight-comment">' Assert that rop is 1.</span>
Assert.IsTrue(gmp_lib.mpz_get_si(rop) = <span class="highlight-number">1</span>)
<span class="highlight-comment">' Release unmanaged memory allocated for rop, base, exp, and mod.</span>
2018-01-06 17:23:30 +01:00
gmp_lib.mpz_clears(rop, base, exp, [<span class="highlight-keyword">mod</span>], <span class="highlight-keyword">Nothing</span>)</pre></div><div id="ID0EDAABA_code_Div3" class="codeSnippetContainerCode" style="display: none"><p>No code example is currently available or this language may not be supported.</p></div><div id="ID0EDAABA_code_Div4" class="codeSnippetContainerCode" style="display: none"><p>No code example is currently available or this language may not be supported.</p></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDAABA");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="3af6b34c-3242-2b75-e7c7-ab79af8a4b0f.htm">gmp_lib Class</a></div><div class="seeAlsoStyle"><a href="d9c51b9f-0c54-770b-28ea-6eebd8fef368.htm">Math.Gmp.Native Namespace</a></div><div class="seeAlsoStyle"><a href="9de702f4-758b-2a4e-1025-ed5e46cc7db2.htm">mpz_powm</a></div><div class="seeAlsoStyle"><a href="9fd28088-e353-2b5e-03e3-9c2763226ed6.htm">mpz_powm_ui</a></div><div class="seeAlsoStyle"><a href="8e3a525d-9371-fb32-1051-e8e8fe23a63d.htm">mpz_pow_ui</a></div><div class="seeAlsoStyle"><a href="6101fda5-1230-66a9-5aff-5d8da426e364.htm">mpz_ui_pow_ui</a></div><div class="seeAlsoStyle"><a href="3af6b34c-3242-2b75-e7c7-ab79af8a4b0f.htm"><a href="/Math.Gmp.Native/html/3af6b34c-3242-2b75-e7c7-ab79af8a4b0f.htm#Integer_Exponentiation">Integer Exponentiations</a></a></div><div class="seeAlsoStyle"><a href="3af6b34c-3242-2b75-e7c7-ab79af8a4b0f.htm"><a href="https://gmplib.org/manual/Integer-Exponentiation.html#Integer-Exponentiation">GNU MP - Integer Exponentiation</a></a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>