<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=JavaScript_DHTML%2FSecurity%2FSHA_1</id>
		<title>JavaScript DHTML/Security/SHA 1 - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=JavaScript_DHTML%2FSecurity%2FSHA_1"/>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=JavaScript_DHTML/Security/SHA_1&amp;action=history"/>
		<updated>2026-04-05T11:07:27Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wbex.ru/index.php?title=JavaScript_DHTML/Security/SHA_1&amp;diff=3686&amp;oldid=prev</id>
		<title> в 09:59, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=JavaScript_DHTML/Security/SHA_1&amp;diff=3686&amp;oldid=prev"/>
				<updated>2010-05-26T09:59:55Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 09:59, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://wbex.ru/index.php?title=JavaScript_DHTML/Security/SHA_1&amp;diff=3687&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=JavaScript_DHTML/Security/SHA_1&amp;diff=3687&amp;oldid=prev"/>
				<updated>2010-05-26T07:27:17Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==SHA-1 Crypt==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;!--&lt;br /&gt;
      CryptoMX Tools&lt;br /&gt;
      Copyright (C) 2004 - 2006 Derek Buitenhuis&lt;br /&gt;
      This program is free software; you can redistribute it and/or&lt;br /&gt;
      modify it under the terms of the GNU General Public License&lt;br /&gt;
      as published by the Free Software Foundation; either version 2&lt;br /&gt;
      of the License, or (at your option) any later version.&lt;br /&gt;
      This program is distributed in the hope that it will be useful,&lt;br /&gt;
      but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
      GNU General Public License for more details.&lt;br /&gt;
      You should have received a copy of the GNU General Public License&lt;br /&gt;
      along with this program; if not, write to the Free Software&lt;br /&gt;
      Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.&lt;br /&gt;
    --&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SHA-1 Crypt&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
      &amp;lt;!-- sha1.js --&amp;gt;&lt;br /&gt;
    &amp;lt;script language=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined&lt;br /&gt;
 * in FIPS PUB 180-1&lt;br /&gt;
 * Version 2.1 Copyright Paul Johnston 2000 - 2002.&lt;br /&gt;
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet&lt;br /&gt;
 * Distributed under the BSD License&lt;br /&gt;
 * See http://pajhome.org.uk/crypt/md5 for details.&lt;br /&gt;
 */&lt;br /&gt;
var hexcase = 0; &lt;br /&gt;
var b64pad  = &amp;quot;&amp;quot;; &lt;br /&gt;
var chrsz   = 8; &lt;br /&gt;
function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));}&lt;br /&gt;
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));}&lt;br /&gt;
function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));}&lt;br /&gt;
function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));}&lt;br /&gt;
function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));}&lt;br /&gt;
function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));}&lt;br /&gt;
function sha1_vm_test()&lt;br /&gt;
{&lt;br /&gt;
  return hex_sha1(&amp;quot;abc&amp;quot;) == &amp;quot;a9993e364706816aba3e25717850c26c9cd0d89d&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function core_sha1(x, len)&lt;br /&gt;
{&lt;br /&gt;
  x[len &amp;gt;&amp;gt; 5] |= 0x80 &amp;lt;&amp;lt; (24 - len % 32);&lt;br /&gt;
  x[((len + 64 &amp;gt;&amp;gt; 9) &amp;lt;&amp;lt; 4) + 15] = len;&lt;br /&gt;
  var w = Array(80);&lt;br /&gt;
  var a =  1732584193;&lt;br /&gt;
  var b = -271733879;&lt;br /&gt;
  var c = -1732584194;&lt;br /&gt;
  var d =  271733878;&lt;br /&gt;
  var e = -1009589776;&lt;br /&gt;
  for(var i = 0; i &amp;lt; x.length; i += 16)&lt;br /&gt;
  {&lt;br /&gt;
    var olda = a;&lt;br /&gt;
    var oldb = b;&lt;br /&gt;
    var oldc = c;&lt;br /&gt;
    var oldd = d;&lt;br /&gt;
    var olde = e;&lt;br /&gt;
    for(var j = 0; j &amp;lt; 80; j++)&lt;br /&gt;
    {&lt;br /&gt;
      if(j &amp;lt; 16) w[j] = x[i + j];&lt;br /&gt;
      else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);&lt;br /&gt;
      var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), &lt;br /&gt;
                       safe_add(safe_add(e, w[j]), sha1_kt(j)));&lt;br /&gt;
      e = d;&lt;br /&gt;
      d = c;&lt;br /&gt;
      c = rol(b, 30);&lt;br /&gt;
      b = a;&lt;br /&gt;
      a = t;&lt;br /&gt;
    }&lt;br /&gt;
    a = safe_add(a, olda);&lt;br /&gt;
    b = safe_add(b, oldb);&lt;br /&gt;
    c = safe_add(c, oldc);&lt;br /&gt;
    d = safe_add(d, oldd);&lt;br /&gt;
    e = safe_add(e, olde);&lt;br /&gt;
  }&lt;br /&gt;
  return Array(a, b, c, d, e);&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
function sha1_ft(t, b, c, d)&lt;br /&gt;
{&lt;br /&gt;
  if(t &amp;lt; 20) return (b &amp;amp; c) | ((~b) &amp;amp; d);&lt;br /&gt;
  if(t &amp;lt; 40) return b ^ c ^ d;&lt;br /&gt;
  if(t &amp;lt; 60) return (b &amp;amp; c) | (b &amp;amp; d) | (c &amp;amp; d);&lt;br /&gt;
  return b ^ c ^ d;&lt;br /&gt;
}&lt;br /&gt;
function sha1_kt(t)&lt;br /&gt;
{&lt;br /&gt;
  return (t &amp;lt; 20) ?  1518500249 : (t &amp;lt; 40) ?  1859775393 :&lt;br /&gt;
         (t &amp;lt; 60) ? -1894007588 : -899497514;&lt;br /&gt;
}  &lt;br /&gt;
function core_hmac_sha1(key, data)&lt;br /&gt;
{&lt;br /&gt;
  var bkey = str2binb(key);&lt;br /&gt;
  if(bkey.length &amp;gt; 16) bkey = core_sha1(bkey, key.length * chrsz);&lt;br /&gt;
  var ipad = Array(16), opad = Array(16);&lt;br /&gt;
  for(var i = 0; i &amp;lt; 16; i++) &lt;br /&gt;
  {&lt;br /&gt;
    ipad[i] = bkey[i] ^ 0x36363636;&lt;br /&gt;
    opad[i] = bkey[i] ^ 0x5C5C5C5C;&lt;br /&gt;
  }&lt;br /&gt;
  var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);&lt;br /&gt;
  return core_sha1(opad.concat(hash), 512 + 160);&lt;br /&gt;
}&lt;br /&gt;
function safe_add(x, y)&lt;br /&gt;
{&lt;br /&gt;
  var lsw = (x &amp;amp; 0xFFFF) + (y &amp;amp; 0xFFFF);&lt;br /&gt;
  var msw = (x &amp;gt;&amp;gt; 16) + (y &amp;gt;&amp;gt; 16) + (lsw &amp;gt;&amp;gt; 16);&lt;br /&gt;
  return (msw &amp;lt;&amp;lt; 16) | (lsw &amp;amp; 0xFFFF);&lt;br /&gt;
}&lt;br /&gt;
function rol(num, cnt)&lt;br /&gt;
{&lt;br /&gt;
  return (num &amp;lt;&amp;lt; cnt) | (num &amp;gt;&amp;gt;&amp;gt; (32 - cnt));&lt;br /&gt;
}&lt;br /&gt;
function str2binb(str)&lt;br /&gt;
{&lt;br /&gt;
  var bin = Array();&lt;br /&gt;
  var mask = (1 &amp;lt;&amp;lt; chrsz) - 1;&lt;br /&gt;
  for(var i = 0; i &amp;lt; str.length * chrsz; i += chrsz)&lt;br /&gt;
    bin[i&amp;gt;&amp;gt;5] |= (str.charCodeAt(i / chrsz) &amp;amp; mask) &amp;lt;&amp;lt; (24 - i%32);&lt;br /&gt;
  return bin;&lt;br /&gt;
}&lt;br /&gt;
function binb2str(bin)&lt;br /&gt;
{&lt;br /&gt;
  var str = &amp;quot;&amp;quot;;&lt;br /&gt;
  var mask = (1 &amp;lt;&amp;lt; chrsz) - 1;&lt;br /&gt;
  for(var i = 0; i &amp;lt; bin.length * 32; i += chrsz)&lt;br /&gt;
    str += String.fromCharCode((bin[i&amp;gt;&amp;gt;5] &amp;gt;&amp;gt;&amp;gt; (24 - i%32)) &amp;amp; mask);&lt;br /&gt;
  return str;&lt;br /&gt;
}&lt;br /&gt;
function binb2hex(binarray)&lt;br /&gt;
{&lt;br /&gt;
  var hex_tab = hexcase ? &amp;quot;0123456789ABCDEF&amp;quot; : &amp;quot;0123456789abcdef&amp;quot;;&lt;br /&gt;
  var str = &amp;quot;&amp;quot;;&lt;br /&gt;
  for(var i = 0; i &amp;lt; binarray.length * 4; i++)&lt;br /&gt;
  {&lt;br /&gt;
    str += hex_tab.charAt((binarray[i&amp;gt;&amp;gt;2] &amp;gt;&amp;gt; ((3 - i%4)*8+4)) &amp;amp; 0xF) +&lt;br /&gt;
           hex_tab.charAt((binarray[i&amp;gt;&amp;gt;2] &amp;gt;&amp;gt; ((3 - i%4)*8  )) &amp;amp; 0xF);&lt;br /&gt;
  }&lt;br /&gt;
  return str;&lt;br /&gt;
}&lt;br /&gt;
function binb2b64(binarray)&lt;br /&gt;
{&lt;br /&gt;
  var tab = &amp;quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&amp;quot;;&lt;br /&gt;
  var str = &amp;quot;&amp;quot;;&lt;br /&gt;
  for(var i = 0; i &amp;lt; binarray.length * 4; i += 3)&lt;br /&gt;
  {&lt;br /&gt;
    var triplet = (((binarray[i   &amp;gt;&amp;gt; 2] &amp;gt;&amp;gt; 8 * (3 -  i   %4)) &amp;amp; 0xFF) &amp;lt;&amp;lt; 16)&lt;br /&gt;
                | (((binarray[i+1 &amp;gt;&amp;gt; 2] &amp;gt;&amp;gt; 8 * (3 - (i+1)%4)) &amp;amp; 0xFF) &amp;lt;&amp;lt; 8 )&lt;br /&gt;
                |  ((binarray[i+2 &amp;gt;&amp;gt; 2] &amp;gt;&amp;gt; 8 * (3 - (i+2)%4)) &amp;amp; 0xFF);&lt;br /&gt;
    for(var j = 0; j &amp;lt; 4; j++)&lt;br /&gt;
    {&lt;br /&gt;
      if(i * 8 + j * 6 &amp;gt; binarray.length * 32) str += b64pad;&lt;br /&gt;
      else str += tab.charAt((triplet &amp;gt;&amp;gt; 6*(3-j)) &amp;amp; 0x3F);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return str;&lt;br /&gt;
}&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;form&amp;gt;&lt;br /&gt;
      &amp;lt;font color=#000000 size=3&amp;gt;Input&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;input type=text name=input size=40&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
      &amp;lt;font color=#000000 size=3&amp;gt;Result&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;input type=text name=hash size=50&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
      &amp;lt;input type=button value=&amp;quot;SHA-1 It!&amp;quot; onclick=&amp;quot;hash.value = hex_sha1(input.value)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>