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

(added title, short description)
m (design changes)
Line 4: Line 4:
 
== Synopsis ==
 
== Synopsis ==
 
<pre>$sha1(plaintext|&binaryvar|filename,[N])
 
<pre>$sha1(plaintext|&binaryvar|filename,[N])
Returns the sha1 hash for the specified data, where N = 0 for plain text (default), 1 for &binary variable, 2 for filename.
 
 
</pre>
 
</pre>
Hash is 160-bits, shown as 40 hexadecimal characters.
 
  
 
== Parameters ==
 
== Parameters ==
'''Required:''' Data<br />
+
'''DATA:''' Can be plaintext, binary variable, or a filename<br />
'''Optional:''' Integer 0-2, where 0 (default) indicates data is plaintext, 1 indicates a &binary variable, 2 indicates contents of a filename
+
'''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 />
 +
If the N parameter isn't used, the default 0 is used (which is different than $crc which has default of N=2.)
 +
 
 +
Hash is 160-bits, shown as 40 lower-case hexadecimal characters.
  
 
== Properties ==
 
== Properties ==
Line 21: Line 22:
 
or
 
or
 
//echo -a $sha1(abc,0)</pre>
 
//echo -a $sha1(abc,0)</pre>
$sha1 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:
 +
<pre>//echo -a $sha1($null)</pre>
  
Echo the SHA1 hash of the zero-length nul string to the active window:
+
Echo the SHA1 hash of the first 1000 bytes of the mIRC program you're running to the active window:
<pre>//echo -a $sha1($nul)</pre>
+
<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 SHA1 hash of the contents of the mIRC program you're running to the active window:
 
<pre>//echo -a $sha1($mircexe,2)</pre>
 
<pre>//echo -a $sha1($mircexe,2)</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>
 
  
 
Suggested Uses:
 
Suggested Uses:
Line 37: Line 38:
 
* Verify downloaded file hasn't been corrupted, matches the sender's original.
 
* Verify downloaded file hasn't been corrupted, matches the sender's original.
 
<br />
 
<br />
Note that $sha1($mircexe) is the same as the SHA1 hash for the text string of the drive:\path\filename for the mIRC you're running, regardless of file contents.<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 />
 
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 />
  
 
== Error Messages ==
 
== Error Messages ==
Note that $sha1 differs from $crc in that it generates error for non-existent files instead of returning hash of $nul string. Also, in absence of specifying index 0-2, $sha1's default is 0 while $crc's default is 2. Also, hex string returned by $sha1 is lowercase while $crc returns uppercase.
+
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.
  
 
<pre>* Error accessing file: $sha1</pre>
 
<pre>* Error accessing file: $sha1</pre>

Revision as of 10:21, 12 June 2017

The $sha1 identifier calculates the sha1 hash of a text, binary variable, or file.

Synopsis

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

Parameters

DATA: Can be plaintext, binary variable, or a filename
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.)

Hash is 160-bits, shown as 40 lower-case hexadecimal characters.

Properties

None

Example

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

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

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 -a $sha1($null)

Echo the SHA1 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 $sha1(&snip,1)

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

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

Suggested Uses:

  • Quick way to compare if 2 files are identical. (First check should always be comparing file sizes.)
  • 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.


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.
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))

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.

* Error accessing file: $sha1

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)

* Invalid parameters: $sha1

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

Added: mIRC v6.3
Added on: 16 Aug 2007
Note: Unless otherwise stated, this was the date of original functionality.
Further enhancements may have been made in later versions.


See also

[Expand]
v · d · e mIRC identifier list