<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.openssl.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'function.openssl-seal.php',
    1 => 'openssl_seal',
    2 => 'Versiegelt (verschl&uuml;sselt) Daten',
  ),
  'up' => 
  array (
    0 => 'ref.openssl.php',
    1 => 'OpenSSL-Funktionen',
  ),
  'prev' => 
  array (
    0 => 'function.openssl-random-pseudo-bytes.php',
    1 => 'openssl_random_pseudo_bytes',
  ),
  'next' => 
  array (
    0 => 'function.openssl-sign.php',
    1 => 'openssl_sign',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/openssl/functions/openssl-seal.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.openssl-seal" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">openssl_seal</h1>
  <p class="verinfo">(PHP 4 &gt;= 4.0.4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">openssl_seal</span> &mdash; <span class="dc-title">Versiegelt (verschlüsselt) Daten</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.openssl-seal-description">
  <h3 class="title">Beschreibung</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>openssl_seal</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="attribute"><a href="class.sensitiveparameter.php">#[\SensitiveParameter]</a> </span><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$data</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter reference">&$sealed_data</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter reference">&$encrypted_keys</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$public_key</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$cipher_algo</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter reference">&$iv</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span><br>): <span class="type"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   Die Funktion <span class="function"><strong>openssl_seal()</strong></span> versiegelt (verschlüsselt)
   <code class="parameter">data</code> unter Verwendung des angegebenen
   <code class="parameter">cipher_algo</code> mit einem zufällig erzeugten geheimen
   Schlüssel. Dieser Schlüssel wird dann mit jedem öffentlichen Schlüssel aus
   dem Array <code class="parameter">public_key</code> verschlüsselt und jeder
   verschlüsselte Umschlagschlüssel wird in
   <code class="parameter">encrypted_keys</code> zurückgegeben. Auf diese Weise können
   versiegelte Daten an mehrere Empfänger gesendet werden (sofern deren
   öffentliche Schlüssel verfügbar sind). Jeder Empfänger muss sowohl die
   versiegelten Daten als auch den entsprechenden Umschlagschlüssel erhalten,
   der mit dem öffentlichen Schlüssel des Empfängers versiegelt wurde. Der IV
   (Initialisierungsvektor) wird erzeugt, und sein Wert wird in
   <code class="parameter">iv</code> zurückgegeben.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.openssl-seal-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">data</code></dt>
     <dd>
      <p class="para">
       Die zu versiegelten Daten.
      </p>
     </dd>
    
    
     <dt><code class="parameter">sealed_data</code></dt>
     <dd>
      <p class="para">
       Die versiegelten Daten.
      </p>
     </dd>
    
    
     <dt><code class="parameter">encrypted_keys</code></dt>
     <dd>
      <p class="para">
       Das Array verschlüsselter Schlüssel.
      </p>
     </dd>
    
    
     <dt><code class="parameter">public_key</code></dt>
     <dd>
      <p class="para">
       Das Array von <span class="classname"><a href="class.opensslasymmetrickey.php" class="classname">OpenSSLAsymmetricKey</a></span>-Instanzen,
       das öffentliche Schlüssel enthält.
      </p>
     </dd>
    
    
     <dt><code class="parameter">cipher_algo</code></dt>
     <dd>
      <p class="para">
       Die Verschlüsselungsmethode.
       <div class="caution"><strong class="caution">Achtung</strong>
        <p class="simpara">
         Der Standardwert für PHP-Versionen vor 8.0 ist
         <code class="literal">&#039;RC4&#039;</code>, was als unsicher gilt. Es wird dringend
         empfohlen, explizit eine sichere Verschlüsselungsmethode anzugeben.
        </p>
       </div>
      </p>
     </dd>
    
    
     <dt><code class="parameter">iv</code></dt>
     <dd>
      <p class="para">
       Der Initialisierungsvektor für die Entschlüsselung von
       <code class="parameter">data</code>. Er wird benötigt, wenn die
       Verschlüsselungsmethode einen IV erfordert. Dies kann durch den Aufruf
       von <span class="function"><a href="function.openssl-cipher-iv-length.php" class="function">openssl_cipher_iv_length()</a></span> mit
       <code class="parameter">cipher_algo</code> ermittelt werden.
      </p>
      <div class="caution"><strong class="caution">Achtung</strong>
       <p class="simpara">
        Der IV kann nicht explizit festgelegt werden. Jeder darin eingestellte
        Wert wird durch einen zufällig generierten Wert überschrieben.
       </p>
      </div>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.openssl-seal-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   Gibt bei Erfolg die Länge der versiegelten Daten zurück; in diesem Fall sind
   die versiegelten Daten in <code class="parameter">sealed_data</code> enthalten und
   <code class="parameter">encrypted_keys</code> enthält die Umschlagschlüssel. Wenn
   ein Fehler aufgetreten ist, gibt die Funktion <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> zurück.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.openssl-seal-changelog">
  <h3 class="title">Changelog</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Beschreibung</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.0.0</td>
      <td>
       <code class="parameter">public_key</code> akzeptiert nun ein <a href="language.types.array.php" class="link">Array</a> von
       <span class="classname"><a href="class.opensslasymmetrickey.php" class="classname">OpenSSLAsymmetricKey</a></span>-Instanzen; vorher wurde ein
       <a href="language.types.array.php" class="link">Array</a> von <a href="language.types.resource.php" class="link">Ressource</a>n vom Typ <code class="literal">OpenSSL key</code>
       akzeptiert.
      </td>
     </tr>

     <tr>
      <td>8.0.0</td>
      <td>
       Der Parameter <code class="parameter">cipher_algo</code> ist nicht mehr
       optional.
      </td>
     </tr>

     <tr>
      <td>8.0.0</td>
      <td>
       <code class="parameter">iv</code> ist nun ein Nullable-Typ.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-function.openssl-seal-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 <span class="function"><strong>openssl_seal()</strong></span>-Beispiel</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Annahme: $data enthält die zu versiegelnden Daten<br /></span><span style="color: #0000BB">$data </span><span style="color: #007700">= </span><span style="color: #DD0000">"test"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Holen der öffentlichen Schlüssel<br /></span><span style="color: #0000BB">$pk1 </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_get_publickey</span><span style="color: #007700">(</span><span style="color: #DD0000">"file://cert1.pem"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$pk2 </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_get_publickey</span><span style="color: #007700">(</span><span style="color: #DD0000">"file://cert2.pem"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Versiegeln der Nachricht, nur Besitzer von $pk1 und $pk2 können $sealed<br />// mit den Schlüsseln $ekeys[0] bzw. $ekeys[1] entschlüsseln.<br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">openssl_seal</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">, </span><span style="color: #0000BB">$sealed</span><span style="color: #007700">, </span><span style="color: #0000BB">$ekeys</span><span style="color: #007700">, array(</span><span style="color: #0000BB">$pk1</span><span style="color: #007700">, </span><span style="color: #0000BB">$pk2</span><span style="color: #007700">), </span><span style="color: #DD0000">'AES256'</span><span style="color: #007700">, </span><span style="color: #0000BB">$iv</span><span style="color: #007700">) &gt; </span><span style="color: #0000BB">0</span><span style="color: #007700">) {<br />    </span><span style="color: #FF8000">// Gegebenenfalls die Werte von $sealed und $iv speichern und später<br />    // in openssl_open verwenden<br />    </span><span style="color: #007700">echo </span><span style="color: #DD0000">"Erfolg\n"</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.openssl-seal-seealso">
  <h3 class="title">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.openssl-open.php" class="function" rel="rdfs-seeAlso">openssl_open()</a> - &Ouml;ffnet versiegelte Daten</span></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>