Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > 05cd670d8a02b2b4a0ffb1756f2e8308 > files > 3365

php-manual-zh-5.2.4-1mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>openssl_seal</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="PHP 手册"
HREF="index.html"><LINK
REL="UP"
TITLE="OpenSSL Functions"
HREF="ref.openssl.html"><LINK
REL="PREVIOUS"
TITLE="openssl_public_encrypt"
HREF="function.openssl-public-encrypt.html"><LINK
REL="NEXT"
TITLE="openssl_sign"
HREF="function.openssl-sign.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="refentry"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>PHP 手册</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="function.openssl-public-encrypt.html"
ACCESSKEY="P"
>上一页</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="function.openssl-sign.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><H1
><A
NAME="function.openssl-seal"
></A
>openssl_seal</H1
><DIV
CLASS="refnamediv"
><A
NAME="AEN164420"
></A
><P
>    (PHP 4 &#62;= 4.0.4, PHP 5)</P
>openssl_seal&nbsp;--&nbsp;Seal (encrypt) data</DIV
><DIV
CLASS="refsect1"
><A
NAME="AEN164423"
></A
><H2
>Description</H2
>int <B
CLASS="methodname"
>openssl_seal</B
> ( string data, string &#38;sealed_data, array &#38;env_keys, array pub_key_ids )<BR
></BR
><P
>&#13;     Returns the length of the sealed data on success, or <TT
CLASS="constant"
><B
>FALSE</B
></TT
> on error.
     If successful the sealed data is returned in
     <CODE
CLASS="parameter"
>sealed_data</CODE
>, and the envelope keys in
     <CODE
CLASS="parameter"
>env_keys</CODE
>.

    </P
><P
>&#13;     <B
CLASS="function"
>openssl_seal()</B
> seals (encrypts)
     <CODE
CLASS="parameter"
>data</CODE
> by using RC4 with a randomly generated
     secret key. The key is encrypted with each of the public keys
     associated with the identifiers in <CODE
CLASS="parameter"
>pub_key_ids</CODE
>
     and each encrypted key is returned
     in <CODE
CLASS="parameter"
>env_keys</CODE
>. This means that one can send
     sealed data to multiple recipients (provided one has obtained their
     public keys). Each recipient must receive both the sealed data and
     the envelope key that was encrypted with the recipient's public key.
    </P
><P
>&#13;     <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN164450"
></A
><P
><B
>例 1. <B
CLASS="function"
>openssl_seal()</B
> example</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#FF8000">// $data is assumed to contain the data to be sealed<br /><br />// fetch public keys for our recipients, and ready them<br /></font><font color="#0000BB">$fp </font><font color="#007700">= </font><font color="#0000BB">fopen</font><font color="#007700">(</font><font color="#DD0000">"/src/openssl-0.9.6/demos/maurice/cert.pem"</font><font color="#007700">, </font><font color="#DD0000">"r"</font><font color="#007700">);<br /></font><font color="#0000BB">$cert </font><font color="#007700">= </font><font color="#0000BB">fread</font><font color="#007700">(</font><font color="#0000BB">$fp</font><font color="#007700">, </font><font color="#0000BB">8192</font><font color="#007700">);<br /></font><font color="#0000BB">fclose</font><font color="#007700">(</font><font color="#0000BB">$fp</font><font color="#007700">);<br /></font><font color="#0000BB">$pk1 </font><font color="#007700">= </font><font color="#0000BB">openssl_get_publickey</font><font color="#007700">(</font><font color="#0000BB">$cert</font><font color="#007700">);<br /></font><font color="#FF8000">// Repeat for second recipient<br /></font><font color="#0000BB">$fp </font><font color="#007700">= </font><font color="#0000BB">fopen</font><font color="#007700">(</font><font color="#DD0000">"/src/openssl-0.9.6/demos/sign/cert.pem"</font><font color="#007700">, </font><font color="#DD0000">"r"</font><font color="#007700">);<br /></font><font color="#0000BB">$cert </font><font color="#007700">= </font><font color="#0000BB">fread</font><font color="#007700">(</font><font color="#0000BB">$fp</font><font color="#007700">, </font><font color="#0000BB">8192</font><font color="#007700">);<br /></font><font color="#0000BB">fclose</font><font color="#007700">(</font><font color="#0000BB">$fp</font><font color="#007700">);<br /></font><font color="#0000BB">$pk2 </font><font color="#007700">= </font><font color="#0000BB">openssl_get_publickey</font><font color="#007700">(</font><font color="#0000BB">$cert</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// seal message, only owners of $pk1 and $pk2 can decrypt $sealed with keys<br />// $ekeys[0] and $ekeys[1] respectively.<br /></font><font color="#0000BB">openssl_seal</font><font color="#007700">(</font><font color="#0000BB">$data</font><font color="#007700">, </font><font color="#0000BB">$sealed</font><font color="#007700">, </font><font color="#0000BB">$ekeys</font><font color="#007700">, array(</font><font color="#0000BB">$pk1</font><font color="#007700">, </font><font color="#0000BB">$pk2</font><font color="#007700">));<br /><br /></font><font color="#FF8000">// free the keys from memory<br /></font><font color="#0000BB">openssl_free_key</font><font color="#007700">(</font><font color="#0000BB">$pk1</font><font color="#007700">);<br /></font><font color="#0000BB">openssl_free_key</font><font color="#007700">(</font><font color="#0000BB">$pk2</font><font color="#007700">);<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
    </P
><P
>&#13;     See also <A
HREF="function.openssl-open.html"
><B
CLASS="function"
>openssl_open()</B
></A
>.
    </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="function.openssl-public-encrypt.html"
ACCESSKEY="P"
>上一页</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>起始页</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="function.openssl-sign.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>openssl_public_encrypt</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="ref.openssl.html"
ACCESSKEY="U"
>上一级</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>openssl_sign</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>