md5.html

来自「perl教程」· HTML 代码 · 共 417 行 · 第 1/2 页

HTML
417
字号
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../displayToc.js"></script>
<script language="JavaScript" src="../../tocParas.js"></script>
<script language="JavaScript" src="../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../scineplex.css">
<title>Digest::MD5 - Perl interface to the MD5 Algorithm</title>
<link rel="stylesheet" href="../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>

<body>

<script>writelinks('__top__',2);</script>
<h1><a>Digest::MD5 - Perl interface to the MD5 Algorithm</a></h1>
<p><a name="__index__"></a></p>

<!-- INDEX BEGIN -->

<ul>

	<li><a href="#name">NAME</a></li>
	<li><a href="#synopsis">SYNOPSIS</a></li>
	<li><a href="#description">DESCRIPTION</a></li>
	<li><a href="#functions">FUNCTIONS</a></li>
	<li><a href="#methods">METHODS</a></li>
	<li><a href="#examples">EXAMPLES</a></li>
	<li><a href="#see_also">SEE ALSO</a></li>
	<li><a href="#copyright">COPYRIGHT</a></li>
	<li><a href="#authors">AUTHORS</a></li>
</ul>
<!-- INDEX END -->

<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>Digest::MD5 - Perl interface to the MD5 Algorithm</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
 <span class="comment"># Functional style</span>
 <span class="keyword">use</span> <span class="variable">Digest::MD5</span> <span class="string">qw(md5 md5_hex md5_base64)</span><span class="operator">;</span>
</pre>
<pre>
 <span class="variable">$digest</span> <span class="operator">=</span> <span class="variable">md5</span><span class="operator">(</span><span class="variable">$data</span><span class="operator">);</span>
 <span class="variable">$digest</span> <span class="operator">=</span> <span class="variable">md5_hex</span><span class="operator">(</span><span class="variable">$data</span><span class="operator">);</span>
 <span class="variable">$digest</span> <span class="operator">=</span> <span class="variable">md5_base64</span><span class="operator">(</span><span class="variable">$data</span><span class="operator">);</span>
</pre>
<pre>
 <span class="comment"># OO style</span>
 <span class="keyword">use</span> <span class="variable">Digest::MD5</span><span class="operator">;</span>
</pre>
<pre>
 <span class="variable">$ctx</span> <span class="operator">=</span> <span class="variable">Digest::MD5</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">;</span>
</pre>
<pre>
 <span class="variable">$ctx</span><span class="operator">-&gt;</span><span class="variable">add</span><span class="operator">(</span><span class="variable">$data</span><span class="operator">);</span>
 <span class="variable">$ctx</span><span class="operator">-&gt;</span><span class="variable">addfile</span><span class="operator">(</span><span class="variable">*FILE</span><span class="operator">);</span>
</pre>
<pre>
 <span class="variable">$digest</span> <span class="operator">=</span> <span class="variable">$ctx</span><span class="operator">-&gt;</span><span class="variable">digest</span><span class="operator">;</span>
 <span class="variable">$digest</span> <span class="operator">=</span> <span class="variable">$ctx</span><span class="operator">-&gt;</span><span class="variable">hexdigest</span><span class="operator">;</span>
 <span class="variable">$digest</span> <span class="operator">=</span> <span class="variable">$ctx</span><span class="operator">-&gt;</span><span class="variable">b64digest</span><span class="operator">;</span>
</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>The <code>Digest::MD5</code> module allows you to use the RSA Data Security
Inc. MD5 Message Digest algorithm from within Perl programs.  The
algorithm takes as input a message of arbitrary length and produces as
output a 128-bit &quot;fingerprint&quot; or &quot;message digest&quot; of the input.</p>
<p>Note that the MD5 algorithm is not as strong as it used to be.  It has
since 2005 been easy to generate different messages that produce the
same MD5 digest.  It still seems hard to generate messages that
produce a given digest, but it is probably wise to move to stronger
algorithms for applications that depend on the digest to uniquely identify
a message.</p>
<p>The <code>Digest::MD5</code> module provide a procedural interface for simple
use, as well as an object oriented interface that can handle messages
of arbitrary length and which can read files directly.</p>
<p>
</p>
<hr />
<h1><a name="functions">FUNCTIONS</a></h1>
<p>The following functions are provided by the <code>Digest::MD5</code> module.
None of these functions are exported by default.</p>
<dl>
<dt><strong><a name="item_md5"><code>md5($data,...)</code></a></strong>

<dd>
<p>This function will concatenate all arguments, calculate the MD5 digest
of this &quot;message&quot;, and return it in binary form.  The returned string
will be 16 bytes long.</p>
</dd>
<dd>
<p>The result of md5(&quot;a&quot;, &quot;b&quot;, &quot;c&quot;) will be exactly the same as the
result of md5(&quot;abc&quot;).</p>
</dd>
</li>
<dt><strong><a name="item_md5_hex"><code>md5_hex($data,...)</code></a></strong>

<dd>
<p>Same as md5(), but will return the digest in hexadecimal form. The
length of the returned string will be 32 and it will only contain
characters from this set: '0'..'9' and 'a'..'f'.</p>
</dd>
</li>
<dt><strong><a name="item_md5_base64"><code>md5_base64($data,...)</code></a></strong>

<dd>
<p>Same as md5(), but will return the digest as a base64 encoded string.
The length of the returned string will be 22 and it will only contain
characters from this set: 'A'..'Z', 'a'..'z', '0'..'9', '+' and
'/'.</p>
</dd>
<dd>
<p>Note that the base64 encoded string returned is not padded to be a
multiple of 4 bytes long.  If you want interoperability with other
base64 encoded md5 digests you might want to append the redundant
string &quot;==&quot; to the result.</p>
</dd>
</li>
</dl>
<p>
</p>
<hr />
<h1><a name="methods">METHODS</a></h1>
<p>The object oriented interface to <code>Digest::MD5</code> is described in this
section.  After a <code>Digest::MD5</code> object has been created, you will add
data to it and finally ask for the digest in a suitable format.  A
single object can be used to calculate multiple digests.</p>
<p>The following methods are provided:</p>
<dl>
<dt><strong><a name="item_new">$md5 = Digest::MD5-&gt;new</a></strong>

<dd>
<p>The constructor returns a new <code>Digest::MD5</code> object which encapsulate
the state of the MD5 message-digest algorithm.</p>
</dd>
<dd>
<p>If called as an instance method (i.e. $md5-&gt;new) it will just reset the
state the object to the state of a newly created object.  No new
object is created in this case.</p>
</dd>
</li>
<dt><strong><a name="item_reset">$md5-&gt;reset</a></strong>

<dd>
<p>This is just an alias for $md5-&gt;new.</p>
</dd>
</li>
<dt><strong><a name="item_clone">$md5-&gt;clone</a></strong>

<dd>
<p>This a copy of the $md5 object. It is useful when you do not want to
destroy the digests state, but need an intermediate value of the
digest, e.g. when calculating digests iteratively on a continuous data
stream.  Example:</p>
</dd>
<dd>
<pre>
    <span class="keyword">my</span> <span class="variable">$md5</span> <span class="operator">=</span> <span class="variable">Digest::MD5</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">;</span>
    <span class="keyword">while</span> <span class="operator">(&lt;&gt;)</span> <span class="operator">{</span>
        <span class="variable">$md5</span><span class="operator">-&gt;</span><span class="variable">add</span><span class="operator">(</span><span class="variable">$_</span><span class="operator">);</span>
        <span class="keyword">print</span> <span class="string">"Line $.: "</span><span class="operator">,</span> <span class="variable">$md5</span><span class="operator">-&gt;</span><span class="variable">clone</span><span class="operator">-&gt;</span><span class="variable">hexdigest</span><span class="operator">,</span> <span class="string">"\n"</span><span class="operator">;</span>
    <span class="operator">}</span>
</pre>
</dd>
</li>
<dt><strong><a name="item_add">$md5-&gt;<code>add($data,...)</code></a></strong>

<dd>
<p>The $data provided as argument are appended to the message we
calculate the digest for.  The return value is the $md5 object itself.</p>
</dd>
<dd>
<p>All these lines will have the same effect on the state of the $md5
object:</p>
</dd>
<dd>
<pre>
    <span class="variable">$md5</span><span class="operator">-&gt;</span><span class="variable">add</span><span class="operator">(</span><span class="string">"a"</span><span class="operator">);</span> <span class="variable">$md5</span><span class="operator">-&gt;</span><span class="variable">add</span><span class="operator">(</span><span class="string">"b"</span><span class="operator">);</span> <span class="variable">$md5</span><span class="operator">-&gt;</span><span class="variable">add</span><span class="operator">(</span><span class="string">"c"</span><span class="operator">);</span>
    <span class="variable">$md5</span><span class="operator">-&gt;</span><span class="variable">add</span><span class="operator">(</span><span class="string">"a"</span><span class="operator">)-&gt;</span><span class="variable">add</span><span class="operator">(</span><span class="string">"b"</span><span class="operator">)-&gt;</span><span class="variable">add</span><span class="operator">(</span><span class="string">"c"</span><span class="operator">);</span>
    <span class="variable">$md5</span><span class="operator">-&gt;</span><span class="variable">add</span><span class="operator">(</span><span class="string">"a"</span><span class="operator">,</span> <span class="string">"b"</span><span class="operator">,</span> <span class="string">"c"</span><span class="operator">);</span>
    <span class="variable">$md5</span><span class="operator">-&gt;</span><span class="variable">add</span><span class="operator">(</span><span class="string">"abc"</span><span class="operator">);</span>
</pre>
</dd>
</li>
<dt><strong><a name="item_addfile">$md5-&gt;<code>addfile($io_handle)</code></a></strong>

<dd>
<p>The $io_handle will be read until EOF and its content appended to the
message we calculate the digest for.  The return value is the $md5
object itself.</p>
</dd>
<dd>
<p>The <a href="#item_addfile"><code>addfile()</code></a> method will <code>croak()</code> if it fails reading data for some
reason.  If it croaks it is unpredictable what the state of the $md5
object will be in. The <a href="#item_addfile"><code>addfile()</code></a> method might have been able to read
the file partially before it failed.  It is probably wise to discard
or reset the $md5 object if this occurs.</p>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?