??xml version="1.0" encoding="utf-8" standalone="yes"?>国产乱一区二区,久久久久伊人,欧美成人精品一区二区http://www.aygfsteel.com/BigForest/category/47153.htmlq寻梦想Q自qz?/description>zh-cnTue, 23 Nov 2010 09:12:07 GMTTue, 23 Nov 2010 09:12:07 GMT60SHA-1的Java实现 及在otp中的使用http://www.aygfsteel.com/BigForest/archive/2010/11/22/338691.htmlBigForestBigForestMon, 22 Nov 2010 06:48:00 GMThttp://www.aygfsteel.com/BigForest/archive/2010/11/22/338691.htmlhttp://www.aygfsteel.com/BigForest/comments/338691.htmlhttp://www.aygfsteel.com/BigForest/archive/2010/11/22/338691.html#Feedback0http://www.aygfsteel.com/BigForest/comments/commentRss/338691.htmlhttp://www.aygfsteel.com/BigForest/services/trackbacks/338691.html阅读全文

BigForest 2010-11-22 14:48 发表评论
]]>
SHA-1-?/title><link>http://www.aygfsteel.com/BigForest/archive/2010/11/22/338684.html</link><dc:creator>BigForest</dc:creator><author>BigForest</author><pubDate>Mon, 22 Nov 2010 06:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/BigForest/archive/2010/11/22/338684.html</guid><wfw:comment>http://www.aygfsteel.com/BigForest/comments/338684.html</wfw:comment><comments>http://www.aygfsteel.com/BigForest/archive/2010/11/22/338684.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/BigForest/comments/commentRss/338684.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/BigForest/services/trackbacks/338684.html</trackback:ping><description><![CDATA[首先介绍下SHA1Q老美的东西当然得看原文了Q而且原文单易懂?br /> 1: FIPS 180-1 Secure Hash Standard:<a target="_blank">http://www.itl.nist.gov/fipspubs/fip180-1.htm</a><br /> <br /> 2: Secure Hash Standard: <a target="_blank">http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf</a><br /> <br /> 看过原文Q对SHA1׃有个大致了解了,q里再脓(chung)Z中文译吧?br /> <br /> <br /> 1 SHA1法?br /> 安全哈希法QSecure Hash AlgorithmQ主要适用于数?br /> {֐标准QDigital Signature Standard DSSQ里面定义的<br /> 数字{֐法QDigital Signature Algorithm DSAQ。对<br /> 于长度小?^64位的消息QSHA1会生一?60位的消息?br /> 要。当接收到消息的时候,q个消息摘要可以用来验证数据<br /> 的完整性。在传输的过E中Q数据很可能会发生变化,那么q时候就会生不同的消息摘要?br /> SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会生同L消息摘要?br /> 2 术语和概?br /> 2.1?Bit)Q字节(ByteQ和字(WordQ?br /> SHA1始终把消息当成一个位QbitQ字W串来处理。本文中Q一?#8220;?#8221;QWordQ是32位,而一?#8220;?br /> ?#8221;QByteQ是8位。比如,字符?#8220;abc”可以被{换成一个位字符Ԍ01100001 01100010 01100011。它<br /> 也可以被表示?6q制字符? 0x616263.<br /> 2.2 q算W和W号<br /> 下面的逻辑q算W都被运用于“?#8221;QWordQ?br /> X^Y = XQ?Y逻辑?br /> X \/ Y = XQ?Y逻辑?br /> X XOR Y= XQ?Y逻辑异或<br /> ~X = X逻辑取反<br /> X+Y定义如下Q?br /> ?X ?Y 代表两个整数 x 和y, 其中 0 <= x < 2^32 ?0 <= y < 2^32. 令整数z = (x + y) mod 2^32.<br /> q时?0 <= z < 2^32. z转换成字Z, 那么是 Z = X + Y.<br /> 循环左移位操作符Sn(X)。X是一个字Qn是一个整敎ͼ0<=n<=32。Sn(X) = (X<<n)OR(X>>32-n)<br /> X<<n定义如下Q抛弃最左边的n位数字,各个位依次向左Udn位,然后?填补双的n位(最后结果还?br /> 32位)。X>>n是抛弃右边的n位,各个位依次向右Udn位,然后在左边的n位填0。因此可以叫Sn(X)位@?br /> UMq算<br /> 3 SHA1法描述<br /> 在SHA1法中,我们必须把原始消息(字符Ԍ文g{)转换成位字符丌ӀSHA1法只接受位作ؓ输入。假<br /> 设我们对字符?#8220;abc”产生消息摘要。首先,我们它转换成位字符串如下:<br /> 01100001 01100010 01100011<br /> ――――――――――――?br /> ‘a’=97 ‘b’=98 ‘c’=99<br /> q个位字W串的长度ؓ24。下面我们需?个步骤来计算MD5?br /> 3.1 补位<br /> 消息必须q行补位Q以使其长度在对512取模以后的余数是448。也是_Q补位后的消息长度)%512 =<br /> 448。即佉K度已l满_512取模后余数是448Q补位也必须要进行?br /> 补位是这栯行的Q先补一?Q然后再?Q直到长度满_512取模后余数是448。总而言之,补位是至?br /> 补一位,最多补512位。还是以前面?#8220;abc”Z昄补位的过E?br /> 原始信息Q?01100001 01100010 01100011<br /> 补位W一步:01100001 01100010 01100011 1<br /> 首先补一?#8220;1”<br /> 补位W二步:01100001 01100010 01100011 10…..0<br /> 然后?23?#8220;0”<br /> 我们可以把最后补位完成后的数据用16q制写成下面的样?br /> 61626380 00000000 00000000 00000000<br /> 00000000 00000000 00000000 00000000<br /> 00000000 00000000 00000000 00000000<br /> 00000000 00000000<br /> 现在Q数据的长度?48了,我们可以q行下一步操作?br /> 3.2 补长?br /> 所谓的补长度是原始数据的长度补到已经q行了补位操作的消息后面。通常用一?4位的数据来表C原?br /> 消息的长度。如果消息长度不大于2^64Q那么第一个字是0。在q行了补长度的操作以后,整个消息变?br /> 下面q样了(16q制格式Q?br /> 61626380 00000000 00000000 00000000<br /> 00000000 00000000 00000000 00000000<br /> 00000000 00000000 00000000 00000000<br /> 00000000 00000000 00000000 00000018<br /> 如果原始的消息长度超q了512Q我们需要将它补?12的倍数。然后我们把整个消息分成一个一?12位的?br /> 据块Q分别处理每一个数据块Q从而得到消息摘要?br /> 3.3 使用的常?br /> 一pd的常量字K(0), K(1), ... , K(79)Q如果以16q制l出。它们如下:<br /> Kt = 0x5A827999 (0 <= t <= 19)<br /> Kt = 0x6ED9EBA1 (20 <= t <= 39)<br /> Kt = 0x8F1BBCDC (40 <= t <= 59)<br /> Kt = 0xCA62C1D6 (60 <= t <= 79).<br /> 3.4 需要用的函数<br /> 在SHA1中我们需要一pd的函数。每个函数ft (0 <= t <= 79)都操?2位字BQCQDq且产生32位字作ؓ?br /> 出。ft(B,C,D)可以如下定义<br /> ft(B,C,D) = (B AND C) or ((NOT B) AND D) ( 0 <= t <= 19)<br /> ft(B,C,D) = B XOR C XOR D (20 <= t <= 39)<br /> ft(B,C,D) = (B AND C) or (B AND D) or (C AND D) (40 <= t <= 59)<br /> ft(B,C,D) = B XOR C XOR D (60 <= t <= 79).<br /> 3.5 计算消息摘要<br /> 必须使用q行了补位和补长度后的消息来计算消息摘要。计需要两个缓冲区Q每个都??2位的字组成,<br /> q需要一?0?2位字的缓冲区。第一?个字的缓冲区被标识ؓAQBQCQDQE。第一?个字的缓冲区被标<br /> 识ؓH0, H1, H2, H3, H4<br /> ?0个字的缓冲区被标识ؓW0, W1,..., W79<br /> 另外q需要一个一个字的TEMP~冲区?br /> Z产生消息摘要Q在W?部分中定义的16个字的数据块M1, M2,..., Mn<br /> 会依ơ进行处理,处理每个数据块Mi 包含80个步骤?br /> 在处理每个数据块之前Q缓冲区 被初始化Z面的|16q制Q?br /> H0 = 0x67452301<br /> H1 = 0xEFCDAB89<br /> H2 = 0x98BADCFE<br /> H3 = 0x10325476<br /> H4 = 0xC3D2E1F0.<br /> 现在开始处理M1, M2, ... , Mn。ؓ了处?Mi,需要进行下面的步骤<br /> (1). ?Mi 分成 16 个字 W0, W1, ... , W15, W0 是最左边的字<br /> (2). 对于 t = 16 ?79 ?Wt = S1(Wt-3 XOR Wt-8 XOR Wt- 14 XOR Wt-16).<br /> (3). ?A = H0, B = H1, C = H2, D = H3, E = H4.<br /> (4) 对于 t = 0 ?79Q执行下面的循环<br /> TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt;<br /> E = D; D = C; C = S30(B); B = A; A = TEMP;<br /> (5). ?H0 = H0 + A, H1 = H1 + B, H2 = H2 + C, H3 = H3 + D, H4 = H4 + E.<br /> 在处理完所有的 Mn, 后,消息摘要是一?60位的字符Ԍ以下面的序标识<br /> H0 H1 H2 H3 H4.<br /> 对于SHA256,SHA384,SHA512。你也可以用怼的办法来计算消息摘要。对消息q行补位的算法完全是一?br /> 的?br /> <img src ="http://www.aygfsteel.com/BigForest/aggbug/338684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/BigForest/" target="_blank">BigForest</a> 2010-11-22 14:30 <a href="http://www.aygfsteel.com/BigForest/archive/2010/11/22/338684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ں</a>| <a href="http://" target="_blank">ͭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Զ</a>| <a href="http://" target="_blank">ϴ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ľ</a>| <a href="http://" target="_blank">ʮ</a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">ͬ</a>| <a href="http://" target="_blank">ǿ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ƥ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ҵ</a>| <a href="http://" target="_blank">Ϣ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̷</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank">ĵ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƾ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>