page_des.html revision 234027
1114987Speter<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2114987Speter<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3114987Speter<title>Heimdal crypto library: DES - Data Encryption Standard crypto interface</title>
4114987Speter<link href="doxygen.css" rel="stylesheet" type="text/css">
5114987Speter<link href="tabs.css" rel="stylesheet" type="text/css">
6114987Speter</head><body>
7114987Speter<p>
8114987Speter<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
9114987Speter</p>
10114987Speter<!-- end of header marker -->
11114987Speter<!-- Generated by Doxygen 1.5.6 -->
12114987Speter<div class="navigation" id="top">
13114987Speter  <div class="tabs">
14114987Speter    <ul>
15114987Speter      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
16114987Speter      <li><a href="modules.html"><span>Modules</span></a></li>
17114987Speter      <li><a href="examples.html"><span>Examples</span></a></li>
18114987Speter    </ul>
19114987Speter  </div>
20114987Speter  <div class="navpath"><a class="el" href="index.html">Heimdal crypto library</a>
21114987Speter  </div>
22114987Speter</div>
23114987Speter<div class="contents">
24114987Speter<h1><a class="anchor" name="page_des">DES - Data Encryption Standard crypto interface </a></h1>See the library functions here: <a class="el" href="group__hcrypto__des.html">DES crypto functions</a><p>
25114987SpeterDES was created by IBM, modififed by NSA and then adopted by NBS (now NIST) and published ad FIPS PUB 46 (updated by FIPS 46-1).<p>
26114987SpeterSince the 19th May 2005 DES was withdrawn by NIST and should no longer be used. See <a class="el" href="page_evp.html">EVP - generic crypto interface</a> for replacement encryption algorithms and interfaces.<p>
27114987SpeterRead more the iteresting history of DES on Wikipedia <a href="http://www.wikipedia.org/wiki/Data_Encryption_Standard">http://www.wikipedia.org/wiki/Data_Encryption_Standard</a> .<h2><a class="anchor" name="des_keygen">
28114987SpeterDES key generation</a></h2>
29114987SpeterTo generate a DES key safely you have to use the code-snippet below. This is because the <a class="el" href="group__hcrypto__des.html#gd70d485549f7444589f3283e938c0258">DES_random_key()</a> can fail with an abort() in case of and failure to start the random generator.<p>
30114987SpeterThere is a replacement function <a class="el" href="group__hcrypto__des.html#gcd3642bcd8a7e93ea977786e5b540d5f">DES_new_random_key()</a>, however that function does not exists in OpenSSL.<p>
31114987Speter<div class="fragment"><pre class="fragment"> DES_cblock key;
32114987Speter <span class="keywordflow">do</span> {
33114987Speter     <span class="keywordflow">if</span> (RAND_rand(&amp;key, <span class="keyword">sizeof</span>(key)) != 1)
34114987Speter          <span class="keywordflow">goto</span> failure;
35114987Speter     <a class="code" href="group__hcrypto__des.html#g4179bef43ceb72cc2034f39e7d2d5ae4">DES_set_odd_parity</a>(key);
36114987Speter } <span class="keywordflow">while</span> (<a class="code" href="group__hcrypto__des.html#g0d8a49cafee4be6cd3922bfb6323fd2d">DES_is_weak_key</a>(&amp;key));
37114987Speter</pre></div><h2><a class="anchor" name="des_impl">
38114987SpeterDES implementation history</a></h2>
39114987SpeterThere was no complete BSD licensed, fast, GPL compatible implementation of DES, so Love wrote the part that was missing, fast key schedule setup and adapted the interface to the orignal libdes.<p>
40119334SpeterThe document that got me started for real was "Efficient Implementation of the Data Encryption Standard" by Dag Arne Osvik. I never got to the PC1 transformation was working, instead I used table-lookup was used for all key schedule setup. The document was very useful since it de-mystified other implementations for me.<p>
41114987SpeterThe core DES function (SBOX + P transformation) is from Richard Outerbridge public domain DES implementation. My sanity is saved thanks to his work. Thank you Richard. </div>
42114987Speter<hr size="1"><address style="text-align: right;"><small>
43114987SpeterGenerated on Wed Jan 11 14:07:38 2012 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
44114987Speter</body>
45114987Speter</html>
46114987Speter