| 
									
										
										
										
											1998-08-10 19:42:37 +00:00
										 |  |  | \section{\module{md5} --- | 
					
						
							|  |  |  |          MD5 message digest algorithm.} | 
					
						
							| 
									
										
										
										
											1998-07-23 17:59:49 +00:00
										 |  |  | \declaremodule{builtin}{md5} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \modulesynopsis{RSA's MD5 message digest algorithm.} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | This module implements the interface to RSA's MD5 message digest | 
					
						
							| 
									
										
										
										
											1998-04-04 06:35:41 +00:00
										 |  |  | \index{message digest, MD5} | 
					
						
							| 
									
										
										
										
											1998-02-09 19:16:20 +00:00
										 |  |  | algorithm (see also Internet \rfc{1321}).  Its use is quite | 
					
						
							| 
									
										
										
										
											1998-04-04 06:35:41 +00:00
										 |  |  | straightforward:\ use the \function{new()} to create an md5 object. | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | You can now feed this object with arbitrary strings using the | 
					
						
							| 
									
										
										
										
											1998-04-04 06:35:41 +00:00
										 |  |  | \method{update()} method, and at any point you can ask it for the | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | \dfn{digest} (a strong kind of 128-bit checksum, | 
					
						
							|  |  |  | a.k.a. ``fingerprint'') of the contatenation of the strings fed to it | 
					
						
							| 
									
										
										
										
											1998-04-04 06:35:41 +00:00
										 |  |  | so far using the \method{digest()} method. | 
					
						
							|  |  |  | \index{checksum!MD5} | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-04-04 06:35:41 +00:00
										 |  |  | For example, to obtain the digest of the string \code{'Nobody inspects | 
					
						
							|  |  |  | the spammish repetition'}: | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1995-01-04 19:17:34 +00:00
										 |  |  | >>> import md5 | 
					
						
							|  |  |  | >>> m = md5.new() | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | >>> m.update("Nobody inspects") | 
					
						
							|  |  |  | >>> m.update(" the spammish repetition") | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | >>> m.digest() | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | '\273d\234\203\335\036\245\311\331\336\311\241\215\360\377\351' | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \end{verbatim} | 
					
						
							| 
									
										
										
										
											1998-04-04 06:35:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | More condensed: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | >>> md5.new("Nobody inspects the spammish repetition").digest() | 
					
						
							|  |  |  | '\273d\234\203\335\036\245\311\331\336\311\241\215\360\377\351' | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \end{verbatim} | 
					
						
							| 
									
										
										
										
											1995-01-04 19:17:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{new}{\optional{arg}} | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | Return a new md5 object.  If \var{arg} is present, the method call | 
					
						
							|  |  |  | \code{update(\var{arg})} is made. | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-01-04 19:17:34 +00:00
										 |  |  | \begin{funcdesc}{md5}{\optional{arg}} | 
					
						
							|  |  |  | For backward compatibility reasons, this is an alternative name for the | 
					
						
							| 
									
										
										
										
											1998-04-04 06:35:41 +00:00
										 |  |  | \function{new()} function. | 
					
						
							| 
									
										
										
										
											1995-01-04 19:17:34 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | An md5 object has the following methods: | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-04-04 06:35:41 +00:00
										 |  |  | \begin{methoddesc}[md5]{update}{arg} | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | Update the md5 object with the string \var{arg}.  Repeated calls are | 
					
						
							|  |  |  | equivalent to a single call with the concatenation of all the | 
					
						
							|  |  |  | arguments, i.e.\ \code{m.update(a); m.update(b)} is equivalent to | 
					
						
							|  |  |  | \code{m.update(a+b)}. | 
					
						
							| 
									
										
										
										
											1998-04-04 06:35:41 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-04-04 06:35:41 +00:00
										 |  |  | \begin{methoddesc}[md5]{digest}{} | 
					
						
							|  |  |  | Return the digest of the strings passed to the \method{update()} | 
					
						
							| 
									
										
										
										
											1996-06-26 19:21:58 +00:00
										 |  |  | method so far.  This is an 16-byte string which may contain | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | non-\ASCII{} characters, including null bytes. | 
					
						
							| 
									
										
										
										
											1998-04-04 06:35:41 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-04-04 06:35:41 +00:00
										 |  |  | \begin{methoddesc}[md5]{copy}{} | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | Return a copy (``clone'') of the md5 object.  This can be used to | 
					
						
							|  |  |  | efficiently compute the digests of strings that share a common initial | 
					
						
							|  |  |  | substring. | 
					
						
							| 
									
										
										
										
											1998-04-04 06:35:41 +00:00
										 |  |  | \end{methoddesc} |