{"id":391,"date":"2013-01-29T19:10:00","date_gmt":"2013-01-29T11:10:00","guid":{"rendered":"http:\/\/note.systw.net\/note\/?p=391"},"modified":"2025-11-04T01:40:54","modified_gmt":"2025-11-03T17:40:54","slug":"%e5%b0%8d%e7%a8%b1%e5%bc%8f%e5%8a%a0%e5%af%86des","status":"publish","type":"post","link":"https:\/\/systw.net\/note\/archives\/391","title":{"rendered":"\u5c0d\u7a31\u5f0f\u52a0\u5bc6DES"},"content":{"rendered":"\n<p><strong>DES(data encryption standard,\u7f8e\u570b\u8cc7\u6599\u52a0\u5bc6\u6a19\u6e96)<\/strong><br>1976\u5e74\u5f8c\u768430\u5e7e\u5e74,\u70ba\u5546\u696d\u6a5f\u69cb\u5e38\u7528\u7684\u52a0\u5bc6\u7cfb\u7d71<br>\u65b9\u6cd5:\u4ee5feistel\u52a0\u5bc6\u6cd5\u70ba\u57fa\u790e,\u752856bitkey\u5c0d64\u4f4d\u5143\u8cc7\u6599\u5340\u6bb5\u9032\u884c\u52a0\u5bc6<br>\u898f\u683c:56 bits key,64bits block size,\u91cd\u505a16\u56de\u5408<br>ps:<br>DES\u662f\u4fee\u6539IBM\u73fe\u6709\u7684lucifer\u7cfb\u7d71\u800c\u7522\u751f\u7684<br>Feistel\u52a0\u5bc6\u6cd5\u662f\u4ee5Shannon\u63d0\u51fa\u7684&#8221;\u53d6\u4ee3-\u91cd\u6392\u7db2\u8def&#8221;\u53caproduct cipher(\u4e58\u6cd5\u52a0\u5bc6\u7cfb\u7d71)\u70ba\u57fa\u790e<\/p>\n\n\n\n<p>DES\u4f7f\u7528shannon\u7cfb\u7d71\u5169\u5927\u7279\u9ede<br><strong>diffusion(\u64f4\u6563)<\/strong>:\u5c07\u660e\u6587\u7d50\u69cb\u5206\u4f48\u5230\u8f03\u9577\u7684\u5bc6\u6587\u4e0a,\u8b93\u7834\u89e3\u8005\u7121\u6cd5\u7528\u7d71\u8a08\u65b9\u5f0f\u5206\u6790<br><strong>confusion(\u6df7\u6dc6)<\/strong>:\u4f7f\u660e\u6587\u548c\u5bc6\u6587\u95dc\u4fc2\u66f4\u52a0\u8907\u96dc,\u8b93\u7834\u89e3\u8005\u7121\u6cd5\u7528\u6578\u5b78\u65b9\u5f0f\u5206\u6790<\/p>\n\n\n\n<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.&nbsp;<\/p>\n\n\n\n<p>\u67b6\u69cb\u5927\u81f4\u5982\u4e0b:<br>\u7522\u751f16\u628a\u56de\u5408\u91d1\u9470<br>\u660e\u6587\u52a0\u5bc6\u6642\u670916\u56de\u5408,\u6bcf\u56de\u5408\u7528\u8a72\u56de\u5408\u91d1\u9470\u52a0\u5bc6<br>\u5bc6\u6587\u89e3\u5bc6\u6642\u670916\u56de\u5408,\u6bcf\u56de\u5408\u7528\u76f8\u53cd\u7684\u56de\u5408\u91d1\u9470\u52a0\u5bc6<\/p>\n\n\n\n<p><strong>\u7522\u751f16\u628a\u56de\u5408\u91d1\u9470<\/strong><br>1<br>KEY_56bit+odd parity check =&gt; KEY_64bit<br>\u572856bit\u91d1\u9470\u4e2d,\u6bcf7bit\u52a0\u51651bit\u540c\u4f4d\u6aa2\u67e5\u8b8a\u70ba8bit,\u4e26\u4f7f1\u7684\u500b\u6578\u8b8a\u70ba\u5947\u6578\u500b<br>2<br>key permutation(KEY_64bit)=&gt;new_KEY_56bit= L_KEY_28bit + R_KEY_28bit<br>\u5c0764bit\u91d1\u9470\u900f\u904ekey permutation\u91cd\u6392\u5f8c\u8b8a\u621056bit\u91d1\u9470,\u5728\u5206\u70ba2\u628a28bit\u91d1\u9470<br>3<br>ls(L_KEY_28bit)+ls(R_KEY_28bit)=&gt;LR_KEY_56bit<br>\u5c072\u628a28bit\u91d1\u9470\u900f\u904els(\u5de6\u79fb\u4f4d\u6578\u8868)\u5f8c,\u5728\u5408\u4f75\u621056bit\u91d1\u9470<br>4<br>compression permutation(LR_KEY_56bit)=&gt;KEY1_48bit<br>\u5c0756bit\u91d1\u9470\u900f\u904ecompression permutation\u91cd\u6392\u5f8c\u8b8a\u621048bit\u91d1\u9470<br>5<br>(step3-step4)*16=&gt;KEY1_48bit~KEY16_48bit<br>\u91cd\u8986\u6b65\u9a5f3\u52304\u76f4\u523016\u628a\u56de\u5408\u91d1\u9470\u7522\u751f<\/p>\n\n\n\n<p><strong>\u52a0\u5bc6\u65b9\u5f0f<\/strong><br>1<br>P_nbit=&gt;P1_64bit,P2_64bit,&#8230;,Pn_xbit<br>\u5148\u5c07\u660e\u6587p\u5207\u6210\u591a\u500b\u5340\u584a,\u5340\u584a\u6700\u5927\u4e0d\u53ef\u5927\u65bc64bit<br>2<br>initial permutation(P1_64bit)=&gt;new_P_64bit=L0_32bit+R0_32bit<br>\u5c0764bit\u5340\u584a\u900f\u904einitial permutation\u91cd\u6392\u5f8c,\u5728\u5206\u70ba\u5169\u500b32bit\u5340\u584a<br>3<br>f(R(x)_32bit,KEY(x+1)_48bit)=&gt;f_R(x)K_32bit<br>\u5c07\u672c\u56de\u5408\u768432bit\u53f3\u5340\u584a\u8207\u8a72\u56de\u5408\u91d1\u9470\u653e\u5165f\u51fd\u6578\u4e2d,\u4ee5\u7522\u751f32bit\u8cc7\u6599<br>f\u51fd\u6578\u904b\u4f5c\u8a73\u7d30\u6b65\u9a5f\u5982\u4e0b<br>3.1<br>ep(R(x)_32bit)=&gt;R(x)_48bit<br>\u5c07\u672c\u56de\u5408\u768432bit\u5340\u584a\u900f\u904eep\u91cd\u6392\u64f4\u5c55\u6210\u70ba48bit\u5340\u584a<br>3.2<br>R(x)_48bit XOR KEY(x+1)_48bit =&gt; data(x)_48bit =&gt;data(x)1_6bit+&#8230;+data(x)8_6bit<br>\u5c0748bit\u5340\u584a\u548c\u672c\u56de\u5408\u91d1\u9470\u505aXOR\u5f8c,\u5728\u5206\u62108\u4efd6bit\u7684\u8cc7\u6599<br>3.3<br>S-BOX1(data(x)1_6bit)=&gt;data(x)1_4bit<br>&#8230;..<br>S-BOX8(data(x)8_6bit)=&gt;data(x)8_4bit<br>\u5c07\u90198\u4efd6bit\u8cc7\u6599\u5206\u5225\u653eS-BOX1-8\u51fd\u6578\u5f8c,\u7522\u751f8\u4efd4bit\u8cc7\u6599<br>3.4<br>P-BOX(data(x)1_4bit+&#8230;+data(x)8_4bit)=&gt;f_R(x)K_32bit<br>\u5c078\u4efd4bit\u8cc7\u6599\u5408\u4f75\u5f8c\u900f\u904eP-BOX\u91cd\u6392\u5f8c\u8f38\u51fa32bit\u8cc7\u6599<br>4<br>(L(x)_32bit) XOR (f_R(x)K_32bit) =&gt; R(x+1)_32bit<br>\u5c07\u8a72\u56de\u540832bit\u5de6\u5340\u584a\u53ca32bit\u8cc7\u6599\u505aXOR\u7522\u751f\u4e0b\u4e00\u56de\u5408\u768432bit\u53f3\u5340\u584a<br>5<br>R(x)_32bit = L(x+1)_32bit<br>\u5de6\u5340\u584a\u7b49\u65bc\u4e0b\u4e00\u56de\u5408\u7684\u53f3\u5340\u584a<br>6<br>(step3-step5)*16=&gt;R16_32bit+L16_32bit=LR_64bit<br>\u91cd\u8986\u6b65\u9a5f3\u52305\u76f4\u5230\u7b2c16\u56de\u5408<br>\u4e26\u5c07\u7b2c16\u56de\u5408\u768432bit\u5de6\u53f3\u5340\u584a\u5408\u4f75\u621064bit\u5340\u584a<br>7<br>final permutation(LR_64bit)=&gt;C_64bit<br>\u5c0764bit\u5340\u584a\u900f\u904efinal permutation\u91cd\u6392\u5f8c\u6210\u70ba\u5bc6\u6587<\/p>\n\n\n\n<p><br><strong>\u89e3\u5bc6\u65b9\u5f0f<\/strong><br>\u985e\u4f3c\u52a0\u5bc6\u65b9\u5f0f,\u5dee\u5225\u5728\u65bc\u4f7f\u7528\u7684\u56de\u5408\u91d1\u9470\u662f\u5f9e\u7b2c16\u628a\u958b\u59cb<br>1<br>initial permutation(C_64bit)=&gt;new_C_64bit=L0_32bit+R0_32bit<br>\u5c0764bit\u5340\u584a\u900f\u904einitial permutation\u91cd\u6392\u5f8c,\u5728\u5206\u70ba\u5169\u500b32bit\u5340\u584a<br>2<br>f(R(x)_32bit,KEY(16-x)_48bit)=&gt;f_R(x)K_32bit<br>\u5c07\u672c\u56de\u5408\u768432bit\u53f3\u5340\u584a\u8207\u9069\u7576\u7684\u56de\u5408\u91d1\u9470\u653e\u5165f\u51fd\u6578\u4e2d,\u4ee5\u7522\u751f32bit\u8cc7\u6599<br>f\u51fd\u6578\u904b\u4f5c\u8a73\u7d30\u6b65\u9a5f\u8207\u524d\u8005\u76f8\u540c<br>3<br>(L(x)_32bit) XOR (f_R(x)K_32bit) =&gt; R(x+1)_32bit<br>\u5c07\u8a72\u56de\u540832bit\u5de6\u5340\u584a\u53ca32bit\u8cc7\u6599\u505aXOR\u7522\u751f\u4e0b\u4e00\u56de\u5408\u768432bit\u53f3\u5340\u584a<br>4<br>R(x)_32bit = L(x+1)_32bit<br>\u5de6\u5340\u584a\u7b49\u65bc\u4e0b\u4e00\u56de\u5408\u7684\u53f3\u5340\u584a<br>5<br>(step2-step4)*16=&gt;R16_32bit+L16_32bit=LR_64bit<br>\u91cd\u8986\u6b65\u9a5f2\u52304\u76f4\u5230\u7b2c16\u56de\u5408,\u4e26\u5c07\u7b2c16\u56de\u5408\u768432bit\u5de6\u53f3\u5340\u584a\u5408\u4f75\u621064bit\u5340\u584a<br>6<br>final permutation(LR_64bit)=&gt;P_64bit<br>\u5c0764bit\u5340\u584a\u900f\u904efinal permutation\u91cd\u6392\u5f8c\u6210\u70ba\u660e\u6587<\/p>\n","protected":false},"excerpt":{"rendered":"<p>DES(data encryption standard,\u7f8e &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[375],"tags":[],"class_list":["post-391","post","type-post","status-publish","format-standard","hentry","category-cryptographic-fundamentals"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/391","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/comments?post=391"}],"version-history":[{"count":1,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/391\/revisions"}],"predecessor-version":[{"id":2853,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/391\/revisions\/2853"}],"wp:attachment":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/media?parent=391"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/categories?post=391"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/tags?post=391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}