{"id":4164,"date":"2016-07-18T09:46:01","date_gmt":"2016-07-18T00:46:01","guid":{"rendered":"http:\/\/blog.bitmeister.jp\/?p=4164"},"modified":"2016-07-15T15:07:28","modified_gmt":"2016-07-15T06:07:28","slug":"sha%e3%81%ae%e4%bb%95%e6%a7%98%e3%81%a8%e5%ae%9f%e8%a3%85%e6%af%94%e8%bc%83sha-256%e7%b7%a8","status":"publish","type":"post","link":"https:\/\/blog.bitmeister.jp\/?p=4164","title":{"rendered":"SHA\u306e\u4ed5\u69d8\u3068\u5b9f\u88c5\u6bd4\u8f03(SHA-256\u7de8)"},"content":{"rendered":"<p><a href=\" https:\/\/blog.bitmeister.jp\/?p=4138\" target=\"_blank\">\u524d\u56de<\/a>\u3001SHA-1\u306e\u4ed5\u69d8\u3068\u5b9f\u88c5\u306b\u3064\u3044\u3066\u6bd4\u8f03\u3057\u305f\u306e\u3067\u3001\u4eca\u56de\u306fSHA-256\u306b\u3064\u3044\u3066\u6bd4\u8f03\u3057\u3066\u307f\u3088\u3046\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p><!--more--><\/p>\n<p>\u4eca\u56de\u306e\u6bd4\u8f03\u306b\u4f7f\u7528\u3059\u308b\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f\u3001GitHub\u306b\u3042\u308bopenssl\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092<br \/>\n\u4f7f\u7528\u3057\u307e\u3057\u305f\u3002\u305d\u306e\u4e2d\u306e\u3001crypto\/sha\/sha256.c\u3067\u3059\u3002<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/openssl\/openssl\" target=\"_blank\">openssl GitHub<\/a><\/li>\n<\/ul>\n<p>\u5ff5\u306e\u305f\u3081\u3001FIPS 180-4\u306e\u30ea\u30f3\u30af\u3082\u7f6e\u3044\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<ul>\n<li><a href=\"http:\/\/csrc.nist.gov\/publications\/fips\/fips180-4\/fips-180-4.pdf\" target=\"_blank\">FIPS 180-4 2015\/08<\/a><\/li>\n<\/ul>\n<p>SHA\u306e\u5171\u901a\u70b9\u3084Word\u306e\u64cd\u4f5c\u306b\u3064\u3044\u3066\u306f\u3001<a href=\" https:\/\/blog.bitmeister.jp\/?p=4138\" target=\"_blank\">SHA-1\u7de8<\/a>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h2>SHA-256\u306e\u4ed5\u69d8\u3068\u5b9f\u88c5\u306e\u6bd4\u8f03<\/h2>\n<h3>1\uff0e\u30d6\u30ed\u30c3\u30af\u30b5\u30a4\u30ba\u3084Word\u30b5\u30a4\u30ba<\/h3>\n<p>SHA-256\u306e\u30d6\u30ed\u30c3\u30af\u30b5\u30a4\u30ba\u306f512bits\u3001Word\u30b5\u30a4\u30ba\u306f32bits\u3067\u3059\u3002<br \/>\n\u5404\u30d6\u30ed\u30c3\u30af\u306f16\u500b\u306e32bit\u306b\u5206\u3051\u3089\u308c\u3066\u51e6\u7406\u3055\u308c\u307e\u3059\u3002<\/p>\n<h3>2\uff0e\u30cf\u30c3\u30b7\u30e5\u306e\u521d\u671f\u5024<\/h3>\n<p>FIPS 180-4\u3067\u8a18\u8ff0\u3055\u308c\u3066\u3044\u308bSHA-256\u306e\u521d\u671f\u5024\u306f\u4ee5\u4e0b\u3067\u3059\u3002<br \/>\n<a href=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_initial_value.png\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_initial_value.png\" alt=\"SHA-256_initial_value\" width=\"695\" height=\"297\" class=\"alignnone size-full wp-image-4165\" srcset=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_initial_value.png 695w, https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_initial_value-300x128.png 300w\" sizes=\"auto, (max-width: 695px) 100vw, 695px\" \/><\/a><\/p>\n<p>crypto\/sha\/sha256.c\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5024\u3068\u4e00\u81f4\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n 34 int SHA256_Init(SHA256_CTX *c)\r\n 35 {\r\n 36     memset(c, 0, sizeof(*c));\r\n 37     c-&gt;h&#x5B;0] = 0x6a09e667UL;\r\n 38     c-&gt;h&#x5B;1] = 0xbb67ae85UL;\r\n 39     c-&gt;h&#x5B;2] = 0x3c6ef372UL;\r\n 40     c-&gt;h&#x5B;3] = 0xa54ff53aUL;\r\n 41     c-&gt;h&#x5B;4] = 0x510e527fUL;\r\n 42     c-&gt;h&#x5B;5] = 0x9b05688cUL;\r\n 43     c-&gt;h&#x5B;6] = 0x1f83d9abUL;\r\n 44     c-&gt;h&#x5B;7] = 0x5be0cd19UL;\r\n 45     c-&gt;md_len = SHA256_DIGEST_LENGTH;\r\n 46     return 1;\r\n 47 }\r\n<\/pre>\n<h3>3\uff0e\u5b9a\u6570<\/h3>\n<p>FIPS 180-4\u3067\u8a18\u8ff0\u3055\u308c\u3066\u3044\u308bSHA-256\u306e\u5b9a\u6570\u306f\u4ee5\u4e0b\u3067\u3059\u3002<br \/>\n<a href=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_constants.png\" data-rel=\"lightbox-image-1\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_constants.png\" alt=\"SHA-256_constants\" width=\"688\" height=\"277\" class=\"alignnone size-full wp-image-4166\" srcset=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_constants.png 688w, https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_constants-300x121.png 300w\" sizes=\"auto, (max-width: 688px) 100vw, 688px\" \/><\/a><\/p>\n<p>64\u500b\u306e32bit\u306e\u5b9a\u6570\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306fSHA-224\u3067\u3082\u540c\u3058\u5024\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<p>crypto\/sha\/sha256.c\u3067\u3082\u540c\u3058\u5024\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n134 static const SHA_LONG K256&#x5B;64] = {\r\n135     0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL,\r\n136     0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL,\r\n137     0xd807aa98UL, 0x12835b01UL, 0x243185beUL, 0x550c7dc3UL,\r\n138     0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, 0xc19bf174UL,\r\n139     0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL,\r\n140     0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL,\r\n141     0x983e5152UL, 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL,\r\n142     0xc6e00bf3UL, 0xd5a79147UL, 0x06ca6351UL, 0x14292967UL,\r\n143     0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, 0x53380d13UL,\r\n144     0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL,\r\n145     0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL,\r\n146     0xd192e819UL, 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL,\r\n147     0x19a4c116UL, 0x1e376c08UL, 0x2748774cUL, 0x34b0bcb5UL,\r\n148     0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, 0x682e6ff3UL,\r\n149     0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL,\r\n150     0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL\r\n151 };\r\n<\/pre>\n<h3>4\uff0e\u95a2\u6570<\/h3>\n<p>FIPS 180-4\u3067\u8a18\u8ff0\u3055\u308c\u3066\u3044\u308bSHA-256\u306e\u95a2\u6570\u306f\u4ee5\u4e0b\u3067\u3059\u3002<br \/>\n<a href=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_functions.png\" data-rel=\"lightbox-image-2\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_functions.png\" alt=\"SHA-256_functions\" width=\"714\" height=\"309\" class=\"alignnone size-full wp-image-4167\" srcset=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_functions.png 714w, https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_functions-300x130.png 300w\" sizes=\"auto, (max-width: 714px) 100vw, 714px\" \/><\/a><\/p>\n<p>crypto\/sha\/sha256.c\u3067\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n153 \/*\r\n154  * FIPS specification refers to right rotations, while our ROTATE macro\r\n155  * is left one. This is why you might notice that rotation coefficients\r\n156  * differ from those observed in FIPS document by 32-N...\r\n157  *\/\r\n158 # define Sigma0(x)       (ROTATE((x),30) ^ ROTATE((x),19) ^ ROTATE((x),10))\r\n159 # define Sigma1(x)       (ROTATE((x),26) ^ ROTATE((x),21) ^ ROTATE((x),7))\r\n160 # define sigma0(x)       (ROTATE((x),25) ^ ROTATE((x),14) ^ ((x)&gt;&gt;3))\r\n161 # define sigma1(x)       (ROTATE((x),15) ^ ROTATE((x),13) ^ ((x)&gt;&gt;10))\r\n162\r\n163 # define Ch(x,y,z)       (((x) &amp; (y)) ^ ((~(x)) &amp; (z)))\r\n164 # define Maj(x,y,z)      (((x) &amp; (y)) ^ ((x) &amp; (z)) ^ ((y) &amp; (z)))\r\n<\/pre>\n<p>ROTATE\u306f\u3001crypto\/des\/des_locl.h\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n 90 # if (defined(OPENSSL_SYS_WIN32) &amp;&amp; defined(_MSC_VER))\r\n 91 #  define ROTATE(a,n)     (_lrotr(a,n))\r\n 92 # elif defined(__ICC)\r\n 93 #  define ROTATE(a,n)     (_rotr(a,n))\r\n 94 # elif defined(__GNUC__) &amp;&amp; __GNUC__&gt;=2 &amp;&amp; !defined(__STRICT_ANSI__) &amp;&amp; !defined(OPENSSL_NO_ASM) &amp;&amp; !defined(OPEN    SSL_NO_INLINE_ASM) &amp;&amp; !defined(PEDANTIC)\r\n 95 #  if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)\r\n 96 #   define ROTATE(a,n)   ({ register unsigned int ret;   \\\r\n 97                                 asm (&quot;rorl %1,%0&quot;       \\\r\n 98                                         : &quot;=r&quot;(ret)     \\\r\n 99                                         : &quot;I&quot;(n),&quot;0&quot;(a) \\\r\n100                                         : &quot;cc&quot;);        \\\r\n101                            ret;                         \\\r\n102                         })\r\n103 #  endif\r\n104 # endif\r\n105 # ifndef ROTATE\r\n106 #  define ROTATE(a,n)     (((a)&gt;&gt;(n))+((a)&lt;&lt;(32-(n))))\r\n107 # endif\r\n<\/pre>\n<p>i386\u3084x86_64\u7cfb\u3067\u306f\u30a2\u30bb\u30f3\u30d6\u30ea\u304c\u9069\u7528\u3055\u308c\u308b\u307f\u305f\u3044\u3067\u3059\u306d\u3002<br \/>\nROTATE\u3067\u5b9f\u884c\u3059\u308b\u51e6\u7406\u306f\u3001ROTR^n(X)\u3068\u540c\u3058\u3088\u3046\u3067\u3059\u3002<\/p>\n<p>\u3088\u304f\u898b\u308b\u3068crypto\/sha\/sha256.c\u3067ROTATE\u306b\u6e21\u3059\u5f15\u6570\u306e\u6570\u5024\u304c\u3001FIPS 180-4\u3067\u8a18\u8ff0\u3055\u308c\u3066\u3044\u308b\u5024\u3068\u7570\u306a\u308a\u307e\u3059\u304c\u300132bits\u306eWord\u30b5\u30a4\u30ba\u3067\u306f\u4ee5\u4e0b\u304c\u6210\u7acb\u3059\u308b\u305f\u3081\u3067\u3059\u3002<br \/>\n<a href=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/ROTR.png\" data-rel=\"lightbox-image-3\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/ROTR-1024x93.png\" alt=\"ROTR\" width=\"730\" height=\"66\" class=\"alignnone size-large wp-image-4168\" srcset=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/ROTR-1024x93.png 1024w, https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/ROTR-300x27.png 300w, https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/ROTR-768x69.png 768w, https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/ROTR-1200x108.png 1200w, https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/ROTR.png 1350w\" sizes=\"auto, (max-width: 730px) 100vw, 730px\" \/><\/a><\/p>\n<h3>5\uff0e\u30e1\u30c3\u30bb\u30fc\u30b8\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u306e\u751f\u6210<\/h3>\n<p>FIPS 180-4\u3067\u8a18\u8ff0\u3055\u308c\u3066\u3044\u308bSHA-256\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u306e\u751f\u6210\u65b9\u6cd5\u306f\u4ee5\u4e0b\u3067\u3059\u3002<br \/>\n<a href=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_message_schedule.png\" data-rel=\"lightbox-image-4\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_message_schedule.png\" alt=\"SHA-256_message_schedule\" width=\"524\" height=\"131\" class=\"alignnone size-full wp-image-4169\" srcset=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_message_schedule.png 524w, https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_message_schedule-300x75.png 300w\" sizes=\"auto, (max-width: 524px) 100vw, 524px\" \/><\/a><\/p>\n<p>crypto\/sha\/sha256.c\u3067\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n187         for (i = 0; i &lt; 16; i++) {\r\n188             (void)HOST_c2l(data, l);\r\n189             T1 = X&#x5B;i] = l;\r\n...(\u4e2d\u7565)...\r\n202         for (; i &lt; 64; i++) {\r\n203             s0 = X&#x5B;(i + 1) &amp; 0x0f];\r\n204             s0 = sigma0(s0);\r\n205             s1 = X&#x5B;(i + 14) &amp; 0x0f];\r\n206             s1 = sigma1(s1);\r\n207\r\n208             T1 = X&#x5B;i &amp; 0xf] += s0 + s1 + X&#x5B;(i + 9) &amp; 0xf];\r\n<\/pre>\n<p>i\u304c16\u307e\u3067\u306f\u305d\u306e\u307e\u307e\u306e\u5024\u3092\u4f7f\u7528\u3057\u300116\u304b\u308964\u307e\u3067\u306fSHA-1\u306e\u4ee3\u66ff\u65b9\u6cd5\u3068\u540c\u3058\u3088\u3046\u306b\u30010xf\u3068\u30de\u30b9\u30af\u3092\u53d6\u3063\u305f\u4f4d\u7f6e\u306b\u3042\u308b\u8981\u7d20\u304b\u3089Wt\u3092\u7b97\u51fa\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u969b\u30010xf\u3092\u6cd5\u3068\u3057\u3066\u5408\u540c\u306a\u4f4d\u7f6e\u306b\u3042\u308b\u8981\u7d20\u3092\u4f7f\u7528\u3059\u308b\u70b9\u306b\u306f\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n<h3>6\uff0e\u30cf\u30c3\u30b7\u30e5\u5024\u306e\u8a08\u7b97<\/h3>\n<p>FIPS 180-4\u306b\u8a18\u8ff0\u3055\u308c\u3066\u3044\u308b\u65b9\u6cd5\u306f\u3001\u4ee5\u4e0b\u3067\u3059\u3002<br \/>\n<a href=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_computing.png\" data-rel=\"lightbox-image-5\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_computing.png\" alt=\"SHA-256_computing\" width=\"414\" height=\"361\" class=\"alignnone size-full wp-image-4170\" srcset=\"https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_computing.png 414w, https:\/\/blog.bitmeister.jp\/wp-content\/uploads\/2016\/07\/SHA-256_computing-300x262.png 300w\" sizes=\"auto, (max-width: 414px) 100vw, 414px\" \/><\/a><\/p>\n<p>crypto\/sha\/sha256.c\u306e\u8a72\u5f53\u90e8\u5206\u306f\u4ee5\u4e0b\u3067\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n187         for (i = 0; i &lt; 16; i++) {\r\n188             (void)HOST_c2l(data, l);\r\n189             T1 = X&#x5B;i] = l;\r\n190             T1 += h + Sigma1(e) + Ch(e, f, g) + K256&#x5B;i];\r\n191             T2 = Sigma0(a) + Maj(a, b, c);\r\n192             h = g;\r\n193             g = f;\r\n194             f = e;\r\n195             e = d + T1;\r\n196             d = c;\r\n197             c = b;\r\n198             b = a;\r\n199             a = T1 + T2;\r\n200         }\r\n201\r\n202         for (; i &lt; 64; i++) {\r\n203             s0 = X&#x5B;(i + 1) &amp; 0x0f];\r\n204             s0 = sigma0(s0);\r\n205             s1 = X&#x5B;(i + 14) &amp; 0x0f];\r\n206             s1 = sigma1(s1);\r\n207\r\n208             T1 = X&#x5B;i &amp; 0xf] += s0 + s1 + X&#x5B;(i + 9) &amp; 0xf];\r\n209             T1 += h + Sigma1(e) + Ch(e, f, g) + K256&#x5B;i];\r\n210             T2 = Sigma0(a) + Maj(a, b, c);\r\n211             h = g;\r\n212             g = f;\r\n213             f = e;\r\n214             e = d + T1;\r\n215             d = c;\r\n216             c = b;\r\n217             b = a;\r\n218             a = T1 + T2;\r\n219         }\r\n<\/pre>\n<p>i\u304c16\u307e\u3067\u51e6\u7406\u306816\u304b\u308964\u307e\u3067\u306e\u51e6\u7406\u3067\u306f\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3092\u751f\u6210\u3057\u3066\u3044\u308b\u90e8\u5206\u3060\u3051\u304c\u7570\u306a\u308a\u307e\u3059\u304c\u3001\u305d\u306e\u4ed6\u306f\u5168\u3066\u540c\u3058\u3067\u3059\u3002<br \/>\nFIPS 180-4\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u305d\u306e\u307e\u307e\u306e\u5f62\u3067\u5b9f\u88c5\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\u3002<\/p>\n<p>\u5909\u6570\u306ed\u304b\u3089e\u3001h\u304b\u3089a\u306b\u79fb\u308b\u6642\u306b\u5024\u304c\u5909\u3063\u3066\u3044\u304f\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002<\/p>\n<p>\u6700\u5f8c\u306b32bit\u306e8\u3064\u306e\u5909\u6570\u306e\u5024\u3092\u4e26\u3079\u308b\u3053\u3068\u3067\u3001256bit\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u30c0\u30a4\u30b8\u30a7\u30b9\u30c8\u304c\u5f97\u3089\u308c\u307e\u3059\u3002<\/p>\n<p>\u4ee5\u4e0a\u304cSHA-256\u306e\u4ed5\u69d8\u3068\u305d\u306e\u5b9f\u88c5\u306e\u6bd4\u8f03\u3067\u3057\u305f\u3002<br \/>\nopenssl\u306eSHA-256\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3067\u306f\u3001FIPS 180-4\u306e\u4ed5\u69d8\u304c\u5272\u3068\u305d\u306e\u307e\u307e\u5b9f\u88c5\u3055\u308c\u3066\u3044\u308b\u3068\u3044\u3046\u5370\u8c61\u3092\u53d7\u3051\u307e\u3057\u305f\u3002<br \/>\n\u6b21\u56de\u306fSHA-512\u7de8\u3067\u3059\u3002<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u56de\u3001SHA-1\u306e\u4ed5\u69d8\u3068\u5b9f\u88c5\u306b\u3064\u3044\u3066\u6bd4\u8f03\u3057\u305f\u306e\u3067\u3001\u4eca\u56de\u306fSHA-256\u306b\u3064\u3044\u3066\u6bd4\u8f03\u3057\u3066\u307f\u3088\u3046\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[18,144,143],"class_list":["post-4164","post","type-post","status-publish","format-standard","hentry","category-tech","tag-linux","tag-openssl","tag-sha"],"_links":{"self":[{"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=\/wp\/v2\/posts\/4164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4164"}],"version-history":[{"count":6,"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=\/wp\/v2\/posts\/4164\/revisions"}],"predecessor-version":[{"id":4187,"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=\/wp\/v2\/posts\/4164\/revisions\/4187"}],"wp:attachment":[{"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}