Server : Apache System : Linux server1.cgrithy.com 3.10.0-1160.95.1.el7.x86_64 #1 SMP Mon Jul 24 13:59:37 UTC 2023 x86_64 User : nobody ( 99) PHP Version : 8.1.23 Disable Function : NONE Directory : /usr/share/doc/python-docs-2.7.5/html/library/ |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>35.5. crypt — Function to check Unix passwords — Python 2.7.5 documentation</title> <link rel="stylesheet" href="../_static/default.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../', VERSION: '2.7.5', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <script type="text/javascript" src="../_static/sidebar.js"></script> <link rel="search" type="application/opensearchdescription+xml" title="Search within Python 2.7.5 documentation" href="../_static/opensearch.xml"/> <link rel="author" title="About these documents" href="../about.html" /> <link rel="copyright" title="Copyright" href="../copyright.html" /> <link rel="top" title="Python 2.7.5 documentation" href="../index.html" /> <link rel="up" title="35. Unix Specific Services" href="unix.html" /> <link rel="next" title="35.6. dl — Call C functions in shared objects" href="dl.html" /> <link rel="prev" title="35.4. grp — The group database" href="grp.html" /> <link rel="shortcut icon" type="image/png" href="../_static/py.png" /> <script type="text/javascript" src="../_static/copybutton.js"></script> </head> <body> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="dl.html" title="35.6. dl — Call C functions in shared objects" accesskey="N">next</a> |</li> <li class="right" > <a href="grp.html" title="35.4. grp — The group database" accesskey="P">previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="http://www.python.org/">Python</a> »</li> <li> <a href="../index.html">Python 2.7.5 documentation</a> » </li> <li><a href="index.html" >The Python Standard Library</a> »</li> <li><a href="unix.html" accesskey="U">35. Unix Specific Services</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="module-crypt"> <span id="crypt-function-to-check-unix-passwords"></span><h1>35.5. <a class="reference internal" href="#module-crypt" title="crypt: The crypt() function used to check Unix passwords. (Unix)"><tt class="xref py py-mod docutils literal"><span class="pre">crypt</span></tt></a> — Function to check Unix passwords<a class="headerlink" href="#module-crypt" title="Permalink to this headline">¶</a></h1> <p id="index-0">This module implements an interface to the <em class="manpage">crypt(3)</em> routine, which is a one-way hash function based upon a modified DES algorithm; see the Unix man page for further details. Possible uses include allowing Python scripts to accept typed passwords from the user, or attempting to crack Unix passwords with a dictionary.</p> <p id="index-1">Notice that the behavior of this module depends on the actual implementation of the <em class="manpage">crypt(3)</em> routine in the running system. Therefore, any extensions available on the current implementation will also be available on this module.</p> <dl class="function"> <dt id="crypt.crypt"> <tt class="descclassname">crypt.</tt><tt class="descname">crypt</tt><big>(</big><em>word</em>, <em>salt</em><big>)</big><a class="headerlink" href="#crypt.crypt" title="Permalink to this definition">¶</a></dt> <dd><p><em>word</em> will usually be a user’s password as typed at a prompt or in a graphical interface. <em>salt</em> is usually a random two-character string which will be used to perturb the DES algorithm in one of 4096 ways. The characters in <em>salt</em> must be in the set <tt class="docutils literal"><span class="pre">[./a-zA-Z0-9]</span></tt>. Returns the hashed password as a string, which will be composed of characters from the same alphabet as the salt (the first two characters represent the salt itself).</p> <p id="index-2">Since a few <em class="manpage">crypt(3)</em> extensions allow different values, with different sizes in the <em>salt</em>, it is recommended to use the full crypted password as salt when checking for a password.</p> </dd></dl> <p>A simple example illustrating typical use:</p> <div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">crypt</span><span class="o">,</span> <span class="nn">getpass</span><span class="o">,</span> <span class="nn">pwd</span> <span class="k">def</span> <span class="nf">login</span><span class="p">():</span> <span class="n">username</span> <span class="o">=</span> <span class="nb">raw_input</span><span class="p">(</span><span class="s">'Python login:'</span><span class="p">)</span> <span class="n">cryptedpasswd</span> <span class="o">=</span> <span class="n">pwd</span><span class="o">.</span><span class="n">getpwnam</span><span class="p">(</span><span class="n">username</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="n">cryptedpasswd</span><span class="p">:</span> <span class="k">if</span> <span class="n">cryptedpasswd</span> <span class="o">==</span> <span class="s">'x'</span> <span class="ow">or</span> <span class="n">cryptedpasswd</span> <span class="o">==</span> <span class="s">'*'</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> <span class="s">"Sorry, currently no support for shadow passwords"</span><span class="p">)</span> <span class="n">cleartext</span> <span class="o">=</span> <span class="n">getpass</span><span class="o">.</span><span class="n">getpass</span><span class="p">()</span> <span class="k">return</span> <span class="n">crypt</span><span class="o">.</span><span class="n">crypt</span><span class="p">(</span><span class="n">cleartext</span><span class="p">,</span> <span class="n">cryptedpasswd</span><span class="p">)</span> <span class="o">==</span> <span class="n">cryptedpasswd</span> <span class="k">else</span><span class="p">:</span> <span class="k">return</span> <span class="mi">1</span> </pre></div> </div> </div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <h4>Previous topic</h4> <p class="topless"><a href="grp.html" title="previous chapter">35.4. <tt class="docutils literal"><span class="pre">grp</span></tt> — The group database</a></p> <h4>Next topic</h4> <p class="topless"><a href="dl.html" title="next chapter">35.6. <tt class="docutils literal"><span class="pre">dl</span></tt> — Call C functions in shared objects</a></p> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../bugs.html">Report a Bug</a></li> <li><a href="../_sources/library/crypt.txt" rel="nofollow">Show Source</a></li> </ul> <div id="searchbox" style="display: none"> <h3>Quick search</h3> <form class="search" action="../search.html" method="get"> <input type="text" name="q" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> <p class="searchtip" style="font-size: 90%"> Enter search terms or a module, class or function name. </p> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="clearer"></div> </div> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="dl.html" title="35.6. dl — Call C functions in shared objects" >next</a> |</li> <li class="right" > <a href="grp.html" title="35.4. grp — The group database" >previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="http://www.python.org/">Python</a> »</li> <li> <a href="../index.html">Python 2.7.5 documentation</a> » </li> <li><a href="index.html" >The Python Standard Library</a> »</li> <li><a href="unix.html" >35. Unix Specific Services</a> »</li> </ul> </div> <div class="footer"> © <a href="../copyright.html">Copyright</a> 1990-2020, Python Software Foundation. <br /> The Python Software Foundation is a non-profit corporation. <a href="http://www.python.org/psf/donations/">Please donate.</a> <br /> Last updated on Oct 13, 2020. <a href="../bugs.html">Found a bug</a>? <br /> Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. </div> </body> </html>