From WikiChip
Difference between revisions of "mirc/identifiers/$sha512"
< mirc‎ | identifiers

(Created page with "{{mirc title|$sha512 identifier}}'''$sha512''' calculates the sha512 hash of a text, {{mirc|binary variables|binary variable}}, or file. Hash is 160-bits, shown as 40 lowe...")
 
m (Fix number of characters shown.)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{mirc title|$sha512 identifier}}'''$sha512''' calculates the [[sha512 hash]] of a text, {{mirc|binary variables|binary variable}}, or file. Hash is 160-bits, shown as 40 lower-case hexadecimal characters.
+
{{mirc title|$sha512 identifier}}'''$sha512''' calculates the [[sha512 hash]] of a text, {{mirc|binary variables|binary variable}}, or file. Hash is 160-bits, shown as 128 lower-case hexadecimal characters.
 +
 
  
 
== Synopsis ==
 
== Synopsis ==
Line 5: Line 6:
  
 
== Parameters ==
 
== Parameters ==
'''plaintext''' - Used with N = 0, just the string you want the sha1 hash of
+
'''plaintext''' - Used with N = 0, just the string you want the sha512 hash of
  
'''&binaryvar''' - A binary variable, used with N = 1, return the sha1 hash of the content of the binvar
+
'''&binaryvar''' - A binary variable, used with N = 1, return the sha512 hash of the content of the binvar
  
'''filename''' - A filename, used with N = 2, return the sha1 hash of the content of the file
+
'''filename''' - A filename, used with N = 2, return the sha512 hash of the content of the file
  
 
'''N:''' Optional integer 0-2, where 0 indicates data is treated as plaintext, 1 indicates a &binary variable, 2 treats data as contents of a filename<br />
 
'''N:''' Optional integer 0-2, where 0 indicates data is treated as plaintext, 1 indicates a &binary variable, 2 treats data as contents of a filename<br />
Line 19: Line 20:
  
 
== Example ==
 
== Example ==
Echo the SHA1 hash of plain text string ''abc'' to the active window:
+
Echo the SHA512 hash of plain text string ''abc'' to the active window:
<pre>//echo -a $sha1(abc)
+
<pre>//echo -a $sha512(abc)
 
or
 
or
//echo -a $sha1(abc,0)</pre>
+
//echo -a $sha512(abc,0)</pre>
 
The DATA is case-sensitive, so hash of "abc" is different than hash of "ABC"
 
The DATA is case-sensitive, so hash of "abc" is different than hash of "ABC"
  
Echo the SHA1 hash of the zero-length null string to the active window:
+
Echo the SHA512 hash of the zero-length null string to the active window:
<pre>//echo -a $sha1($null)</pre>
+
<pre>//echo -a $sha512($null)</pre>
 
 
Echo the SHA1 hash of the first 1000 bytes of the mIRC program you're running to the active window:
 
<pre>//bread $qt($mircexe) 0 1000 &snip | echo -a $sha1(&snip,1)</pre>
 
  
Echo the SHA1 hash of the contents of the mIRC program you're running to the active window:
+
Echo the SHA512 hash of the first 1000 bytes of the mIRC program you're running to the active window:
<pre>//echo -a $sha1($mircexe,2)</pre>
+
<pre>//bread $qt($mircexe) 0 1000 &snip | echo -a $sha512(&snip,1)</pre>
  
Suggested Uses:
+
Echo the SHA512 hash of the contents of the mIRC program you're running to the active window:
* Quick way to compare if 2 files are identical. (First check should always be comparing file sizes.)
+
<pre>//echo -a $sha512($mircexe,2)</pre>
* Quick way to check if a file's contents have changed since stored sha1 hash was made.
 
* Verify downloaded file hasn't been corrupted, matches the sender's original.
 
<br />
 
Note that because the default is N=0, '''$sha1($mircexe)''' is the SHA1 hash for the plaintext text string of the drive:\path\filename for the mIRC you're running, and not the hash of the filename contents. This differs from $crc($mircexe) giving the checksum of the filename contents because $crc has default of N=2.<br />
 
mIRC v7.x Unicode-encodes plaintext before providing to $sha1, so v7.x and v6.x return different answers for //echo -a $sha1($chr(233))<br />
 
  
If the text doesn't have Unicode code points above 255, to avoid having Unicode points 128-255 encoded to 2-byte pairs, the text must be fed to $sha1 as a binary variable:<br />
+
Note that because the default is N=0, '''$sha512($mircexe)''' is the SHA512 hash for the plaintext text string of the drive:\path\filename for the mIRC you're running, and not the hash of the filename contents. This differs from $crc($mircexe) giving the checksum of the filename contents because $crc has default of N=2.<br />
 +
mIRC v7.x Unicode-encodes bytes 128-255 to utf8 before providing to $sha512, if the text doesn't have code points above 255, you can avoid the utf8 encoding issue by using a binvar with the -a switch.
  
 
<pre>//bset -ta &string 1 chloé | echo -a $sha1(&string,1)</pre>
 
<pre>//bset -ta &string 1 chloé | echo -a $sha1(&string,1)</pre>
  
 
== Error Messages ==
 
== Error Messages ==
Note that $sha1 differs from $crc in that it generates error for non-existent files instead of returning hash of $null string. Also, hex string returned by $sha1 is lowercase while $crc returns uppercase hex.
+
Note that $sha512 differs from $crc in that it generates error for non-existent files instead of returning hash of $null string. Also, hex string returned by $sha512 is lowercase while $crc returns uppercase hex.
  
<pre>* Error accessing file: $sha1</pre>
+
<pre>* Error accessing file: $sha512</pre>
Either file does not exist, or file permissions don't allow the file to be read. i.e. $sha1(non-existent-file,2) or $sha1(c:\hiberfil.sys,2)
+
Either file does not exist, or file permissions don't allow the file to be read. i.e. $sha512(non-existent-file,2) or $sha512(c:\hiberfil.sys,2)
  
<pre>* Invalid parameters: $sha1</pre>
+
<pre>* Invalid parameters: $sha512</pre>
 
Either using a zero-length/non-existent binary variable or specifying an N where $int(%N) isn't 0-2.
 
Either using a zero-length/non-existent binary variable or specifying an N where $int(%N) isn't 0-2.
  
Line 58: Line 52:
  
 
== Compatibility ==
 
== Compatibility ==
{{mIRC compatibility|6.3}}
+
{{mIRC compatibility|7.42}}
  
 
== See also ==
 
== See also ==
Line 65: Line 59:
 
* {{mIRC|$sha256}}
 
* {{mIRC|$sha256}}
 
* {{mIRC|$sha384}}
 
* {{mIRC|$sha384}}
* {{mIRC|$sha512}}
+
* {{mIRC|$sha1}}
 
* [[List of identifiers - mIRC]]
 
* [[List of identifiers - mIRC]]
 
{{mIRC identifier list}}
 
{{mIRC identifier list}}
[[Category:mIRC identifiers|mircini]]
+
[[Category:mIRC identifiers|sha512]]

Latest revision as of 17:49, 19 July 2024

$sha512 calculates the sha512 hash of a text, binary variable, or file. Hash is 160-bits, shown as 128 lower-case hexadecimal characters.


Synopsis[edit]

$sha512(plaintext|&binaryvar|filename,[N])

Parameters[edit]

plaintext - Used with N = 0, just the string you want the sha512 hash of

&binaryvar - A binary variable, used with N = 1, return the sha512 hash of the content of the binvar

filename - A filename, used with N = 2, return the sha512 hash of the content of the file

N: Optional integer 0-2, where 0 indicates data is treated as plaintext, 1 indicates a &binary variable, 2 treats data as contents of a filename

If the N parameter isn't used, the default 0 is used (which is different than $crc which has default of N=2.)

Properties[edit]

None

Example[edit]

Echo the SHA512 hash of plain text string abc to the active window:

//echo -a $sha512(abc)
or
//echo -a $sha512(abc,0)

The DATA is case-sensitive, so hash of "abc" is different than hash of "ABC"

Echo the SHA512 hash of the zero-length null string to the active window:

//echo -a $sha512($null)

Echo the SHA512 hash of the first 1000 bytes of the mIRC program you're running to the active window:

//bread $qt($mircexe) 0 1000 &snip | echo -a $sha512(&snip,1)

Echo the SHA512 hash of the contents of the mIRC program you're running to the active window:

//echo -a $sha512($mircexe,2)

Note that because the default is N=0, $sha512($mircexe) is the SHA512 hash for the plaintext text string of the drive:\path\filename for the mIRC you're running, and not the hash of the filename contents. This differs from $crc($mircexe) giving the checksum of the filename contents because $crc has default of N=2.
mIRC v7.x Unicode-encodes bytes 128-255 to utf8 before providing to $sha512, if the text doesn't have code points above 255, you can avoid the utf8 encoding issue by using a binvar with the -a switch.

//bset -ta &string 1 chloé | echo -a $sha1(&string,1)

Error Messages[edit]

Note that $sha512 differs from $crc in that it generates error for non-existent files instead of returning hash of $null string. Also, hex string returned by $sha512 is lowercase while $crc returns uppercase hex.

* Error accessing file: $sha512

Either file does not exist, or file permissions don't allow the file to be read. i.e. $sha512(non-existent-file,2) or $sha512(c:\hiberfil.sys,2)

* Invalid parameters: $sha512

Either using a zero-length/non-existent binary variable or specifying an N where $int(%N) isn't 0-2.

Both above errors halt execution of the script

Compatibility[edit]

Added: mIRC v7.42
Added on: 17 Jul 2015
Note: Unless otherwise stated, this was the date of original functionality.
Further enhancements may have been made in later versions.


See also[edit]

v · d · e mIRC identifier list

$ $$, $, $0, $1-, $!, $&, $*, $+, $++, $?

A $abook, $abs, $acos, $active, $activecid, $activewid, $adate, $address, $addtok, $addtokcs, $agent, $agentname, $agentstat, $agentver, $alias, $and, $anick, $ansi2mirc, $aop, $appactive, $appstate, $asc, $asctime, $asin, $atan, $atan2, $auto, $avoice, $away, $awaymsg, $awaytime

B $banlist, $banmask, $base, $beta, $bfind, $bindip, $bitoff, $biton, $bits, $bnick, $bvar, $bytes

C $calc, $caller, $cancel, $cb, $cd, $ceil, $chan, $chanmodes, $channel, $chantypes, $chat, $chr, $cid, $clevel, $click, $cmdbox, $cmdline, $cnick, $color, $colour, $com, $comcall, $comchan, $comchar, $comerr, $compact, $compress, $comval, $cos, $cosh, $count, $countcs, $cr, $crc, $creq, $crlf, $ctime, $ctimer, $ctrlenter

D $date, $day, $daylight, $dbuh, $dbuw, $dccignore, $dccport, $dde, $ddename, $debug, $decode, $decompress, $deltok, $devent, $dialog, $did, $didreg, $didtok, $didwm, $dir, $disk, $dlevel, $dll, $dllcall, $dname, $dns, $donotdisturb, $dqwindow, $duration

E $ebeeps, $editbox, $email, $emailaddr, $encode, $envvar, $error, $eval, $evalnext, $event, $eventid, $eventparms, $exists, $exiting

F $false, $feof, $ferr, $fgetc, $file, $filename, $filtered, $find, $finddir, $finddirn, $findfile, $findfilen, $findtok, $findtokcs, $fline, $flinen, $floor, $font, $fopen, $fread, $fromeditbox, $fserv, $fserve, $fulladdress, $fulldate, $fullname, $fullscreen

G $get, $getdir, $getdot, $gettok, $gmt, $group

H $halted, $hash, $height, $hfile, $hfind, $hget, $highlight, $hmac $hmatch, $hnick, $host, $hotline, $hotlinepos, $hotlink, $hotp, $hregex, $hypot

I $iaddress, $ial, $ialchan, $ibl, $idle, $iel, $ifmatch, $ifmatch2, $ignore, $iif, $iil, $inellipse, $ini, $initopic, $inmidi, $inmode, $inmp3, $inpaste, $inpoly, $input, $inrect, $inroundrect, $insong, $insongpause, $instok, $int, $intersect, $inwave, $inwho, $ip, $iptype, $iql, $isadmin, $isalias, $isbit, $isdde, $isdir, $isfile, $isid, $islower, $istok, $istokcs, $isupper, $isutf

K $keychar, $keyrpt, $keyval, $knick

L $lactive, $lactivecid, $lactivewid, $left, $leftwin, $leftwincid, $leftwinwid, $len, $level, $lf, $line, $lines, $link, $lock, $locked, $lof, $log, $log10, $logdir, $logstamp, $logstampfmt, $longfn, $longip, $lower, $ltimer

M $maddress, $mask, $matchkey, $matchtok, $matchtokcs, $maxlenl, $maxlenm, $maxlens, $md5, $me, $menu, $menubar, $menucontext, $menutype, $mid, $mididir, $mircdir, $mircexe, $mircini, $mkfn, $mklogfn, $mknickfn, $mnick, $mode, $modefirst, $modelast, $modespl, $mouse, $mousecx, $mousecy, $mousedx, $mousedy, $mousekey, $mouselb, $mousex, $mousey, $mousewin, $mp3, $mp3dir, $msfile, $msgstamp, $msgtags

N $N, $naddress, $network, $newnick, $nhnick, $nick, $nickmode, $no, $nofile, $nopath, $nopnick, $noqt, $not, $notags, $notify, $null, $numeric, $numtok, $nvnick

O $ok, $online, $onlineserver, $onlinetotal $onpoly, $opnick, $or, $ord, $os

P $parmN, $parms, $parseline, $parsetype, $parseutf, $passivedcc, $pi, $pic, $play, $pnick, $portable, $portfree, $pos, $poscs, $prefix, $prop, $protect, $puttok

Q $qt, $query

R $r, $raddress, $rand, $rands, $rawbytes, $rawmsg, $read, $readini, $readn, $regbr, $regerrstr, $regex, $regml, $regmlex, $regsub, $regsubex, $remote, $remove, $removecs, $remtok, $remtokcs, $replace, $replacecs, $replacex, $replacexcs, $reptok, $reptokcs, $result, $rgb, $right, $rnick, $round

S $samepath, $scid, $scon, $script, $scriptdir, $scriptline, $sdir, $send, $server, $serverip, $servertarget, $sfile, $sha1, $sha256, $sha384, $sha512, $shortfn, $show, $signal, $sin, $sinh, $site, $sline, $snick, $snicks, $snotify, $sock, $sockbr, $sockerr, $sockname, $sorttok, $sorttokcs, $sound, $speak, $sqrt, $sreq, $ssl, $sslcertsha1, $sslcertsha256, $sslcertvalid, $ssldll, $ssllibdll, $sslready, $sslversion, $starting, $status, $str, $strip, $stripped, $style, $submenu, $switchbar, $sysdir

T $tan, $tanh, $target, $tempfn, $ticks, $time, $timeout, $timer, $timestamp, $timestampfmt, $timezone, $tip, $tips, $titlebar, $token, $toolbar, $topic, $totp, $treebar, $true, $trust

U $ulevel, $ulist, $unsafe, $upper, $uptime, $url, $usermode, $utfdecode, $utfencode

V $v1, $v2, $var, $vc, $vcmd, $vcmdstat, $vcmdver, $version, $vnick, $vol

W $wavedir, $wid, $width, $wildsite, $wildtok, $wildtokcs, $window, $wrap

X $xor

Y $yes

Z $zip

= =$nick