<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=HMAC</id>
	<title>HMAC - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=HMAC"/>
	<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=HMAC&amp;action=history"/>
	<updated>2026-04-28T22:13:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://pickwiki.org/index.php?title=HMAC&amp;diff=1849&amp;oldid=prev</id>
		<title>Conversion script: link fix</title>
		<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=HMAC&amp;diff=1849&amp;oldid=prev"/>
		<updated>2015-02-26T23:48:54Z</updated>

		<summary type="html">&lt;p&gt;link fix&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
*&lt;br /&gt;
* All this is based on the examples shown on the Wikipedia HMAC page&lt;br /&gt;
*&lt;br /&gt;
X.I.PAD = OCONV(&amp;quot;36&amp;quot;, &amp;quot;MCXD&amp;quot;) ;** x36 = DECIMAL 54&lt;br /&gt;
X.O.PAD = OCONV(&amp;quot;5C&amp;quot;, &amp;quot;MCXD&amp;quot;) ;** x5C = DECIMAL 92&lt;br /&gt;
X.THE.BLOCK.SIZE=64&lt;br /&gt;
X.THE.KEY=&amp;quot;&amp;quot;&lt;br /&gt;
FOR I = 255 TO 250 STEP -1&lt;br /&gt;
  X.THE.KEY := CHAR(I)&lt;br /&gt;
NEXT I&lt;br /&gt;
X.TO.BE.HASHED=&amp;quot;input&amp;quot;&lt;br /&gt;
X.I.KEY.FINAL=&amp;quot;&amp;quot;&lt;br /&gt;
X.O.KEY.FINAL=&amp;quot;&amp;quot;&lt;br /&gt;
IF X.THE.KEY = &amp;quot;&amp;quot; THEN&lt;br /&gt;
  X.THE.KEY = STR(CHAR(0) , X.THE.BLOCK.SIZE)&lt;br /&gt;
END ELSE&lt;br /&gt;
  IF LEN(X.THE.KEY) &amp;gt; X.THE.BLOCK.SIZE THEN&lt;br /&gt;
    X.HASHED.VAL=&amp;quot;&amp;quot;&lt;br /&gt;
    X.ALGORITHM=&amp;quot;MD5&amp;quot;&lt;br /&gt;
    X.DATA.LOC=1  ;** Return data in a string (2=to a file)&lt;br /&gt;
    X.ERROR.FLAG=DIGEST(X.ALGORITHM, X.THE.KEY, X.DATA.LOC, X.HASHED.VAL)  ;** &amp;quot;DIGEST&amp;quot; command actually does the MD5 hashing&lt;br /&gt;
*&lt;br /&gt;
    X.HASHED.VAL=OCONV(X.HASHED.VAL,&amp;quot;[[MX0C]]&amp;quot;)  ;** convert binary to ascii hex string&lt;br /&gt;
    X.HASHED.VAL=DOWNCASE(X.HASHED.VAL)&lt;br /&gt;
    X.THE.KEY=X.HASHED.VAL&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
FOR I = 1 TO LEN(X.THE.KEY)&lt;br /&gt;
  X.DEC.VAL=SEQ(X.THE.KEY[I,1])&lt;br /&gt;
  X.I.KEY.FINAL := CHAR(BITXOR(X.DEC.VAL , X.I.PAD))&lt;br /&gt;
  X.O.KEY.FINAL := CHAR(BITXOR(X.DEC.VAL , X.O.PAD))&lt;br /&gt;
NEXT I&lt;br /&gt;
*&lt;br /&gt;
FOR I = 1 TO (X.THE.BLOCK.SIZE - LEN(X.THE.KEY))&lt;br /&gt;
  X.I.KEY.FINAL := CHAR(BITXOR(0 , X.I.PAD))&lt;br /&gt;
  X.O.KEY.FINAL := CHAR(BITXOR(0 , X.O.PAD))&lt;br /&gt;
NEXT I&lt;br /&gt;
*&lt;br /&gt;
X.INNER.HASH = X.I.KEY.FINAL : X.TO.BE.HASHED&lt;br /&gt;
X.ERROR.FLAG=0&lt;br /&gt;
X.ERROR.MSG=&amp;#039;&amp;#039;&lt;br /&gt;
*&lt;br /&gt;
X.HASHED.VAL=&amp;quot;&amp;quot;&lt;br /&gt;
X.ALGORITHM=&amp;quot;MD5&amp;quot;&lt;br /&gt;
X.DATA.LOC=1  ;** Return data in a string (2=to a file)&lt;br /&gt;
X.ERROR.FLAG=DIGEST(X.ALGORITHM, X.INNER.HASH, X.DATA.LOC, X.HASHED.VAL)&lt;br /&gt;
*&lt;br /&gt;
X.OUTER.HASH = X.O.KEY.FINAL : X.HASHED.VAL&lt;br /&gt;
X.ERROR.FLAG=0&lt;br /&gt;
X.ERROR.MSG=&amp;#039;&amp;#039;&lt;br /&gt;
*&lt;br /&gt;
X.HASHED.VAL=&amp;quot;&amp;quot;&lt;br /&gt;
X.ALGORITHM=&amp;quot;MD5&amp;quot;&lt;br /&gt;
X.DATA.LOC=1&lt;br /&gt;
X.ERROR.FLAG=DIGEST(X.ALGORITHM, X.OUTER.HASH, X.DATA.LOC, X.HASHED.VAL)&lt;br /&gt;
*&lt;br /&gt;
X.HASHED.VAL=OCONV(X.HASHED.VAL,&amp;quot;[[MX0C]]&amp;quot;)  ;** convert binary to ascii hex string&lt;br /&gt;
X.HASHED.VAL=DOWNCASE(X.HASHED.VAL)&lt;br /&gt;
*&lt;br /&gt;
CRT X.HASHED.VAL&lt;br /&gt;
&lt;br /&gt;
STOP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Conversion script</name></author>
	</entry>
</feed>