Difference between revisions of "Hashing Module"

From BaseX Documentation
Jump to navigation Jump to search
(37 intermediate revisions by 2 users not shown)
Line 1: Line 1:
This [[Module Library|XQuery Module]] contains cryptographic hash functions.
+
This [[Module Library|XQuery Module]] provides functions that perform different hash operations.
  
 
=Conventions=
 
=Conventions=
  
All functions in this module are assigned to the {{Code|http://basex.org/modules/hash}} namespace, which is statically bound to the {{Code|hash}} prefix.<br/>
+
All functions and errors in this module are assigned to the <code><nowiki>http://basex.org/modules/hash</nowiki></code> namespace, which is statically bound to the {{Code|hash}} prefix.<br/>
All errors are assigned to the {{Code|http://basex.org/errors}} namespace, which is statically bound to the {{Code|bxerr}} prefix.
 
  
 
=Functions=
 
=Functions=
  
==util:md5==
+
==hash:md5==
{|
+
{| width='100%'
 
|-
 
|-
| width='90' | '''Signatures'''
+
| width='120' | '''Signatures'''
|{{Func|util:md5|$value as xs:string|xs:hexBinary}}<br />
+
|{{Func|hash:md5|$value as xs:anyAtomicType|xs:base64Binary}}<br />
 
|-
 
|-
 
| '''Summary'''
 
| '''Summary'''
|Computes the MD5 hash of the given string {{Code|$value}}.<br />
+
|Computes the MD5 hash of the given {{Code|$value}}, which may be of type xs:string, xs:base64Binary, or xs:hexBinary.
 
|-
 
|-
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
* {{Code|util:md5("")}} returns {{Code|'D41D8CD98F00B204E9800998ECF8427E'}}.
+
* {{Code|string(xs:hexBinary(hash:md5("BaseX")))}} returns {{Code|0D65185C9E296311C0A2200179E479A2}}.
* {{Code|util:md5('BaseX')}} returns {{Code|'0D65185C9E296311C0A2200179E479A2'}}.
+
* {{Code|string(hash:md5(xs:base64Binary("")))}} returns <code>1B2M2Y8AsgTpgAmY7PhCfg==</code>.
 
|}
 
|}
  
==util:sha1==
+
==hash:sha1==
{|
+
{| width='100%'
 
|-
 
|-
| width='90' | '''Signatures'''
+
| width='120' | '''Signatures'''
|{{Func|util:sha1|$value as xs:string|xs:hexBinary}}<br />
+
|{{Func|hash:sha1|$value as xs:anyAtomicType|xs:base64Binary}}<br />
 
|-
 
|-
 
| '''Summary'''
 
| '''Summary'''
|Computes the SHA-1 hash of the given string {{Code|$value}}.<br />
+
|Computes the SHA-1 hash of the given {{Code|$value}}, which may be of type xs:string, xs:base64Binary, or xs:hexBinary.
 
|-
 
|-
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
* {{Code|util:sha1("")}} returns {{Code|'DA39A3EE5E6B4B0D3255BFEF95601890AFD80709'}}.
+
* {{Code|string(xs:hexBinary(hash:sha1("BaseX")))}} returns {{Code|3AD5958F0F27D5AFFDCA2957560F121D0597A4ED}}.
* {{Code|util:sha1("BaseX")}} returns {{Code|'3AD5958F0F27D5AFFDCA2957560F121D0597A4ED'}}.
+
* {{Code|string(hash:sha1(xs:base64Binary("")))}} returns <code>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</code>.
 
|}
 
|}
  
==util:sha256==
+
==hash:sha256==
{|
+
{| width='100%'
 
|-
 
|-
| width='90' | '''Signatures'''
+
| width='120' | '''Signatures'''
|{{Func|util:sha256|$value as xs:string|xs:hexBinary}}<br />
+
|{{Func|hash:sha256|$value as xs:anyAtomicType|xs:base64Binary}}<br />
 
|-
 
|-
 
| '''Summary'''
 
| '''Summary'''
|Computes the SHA-256 hash of the given string {{Code|$value}}.<br />
+
|Computes the SHA-256 hash of the given {{Code|$value}}, which may be of type xs:string, xs:base64Binary, or xs:hexBinary.
 
|-
 
|-
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
* {{Code|util:sha256("")}} returns {{Code|'E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855'}}.
+
* {{Code|string(xs:hexBinary(hash:sha256("BaseX")))}} returns {{Code|15D570763DEB75D728BB69643392873B835CCCC94A2F1E881909DA47662821A3}}.
* {{Code|util:sha256("BaseX")}} returns {{Code|'15D570763DEB75D728BB69643392873B835CCCC94A2F1E881909DA47662821A3'}}.
+
* {{Code|string(hash:sha256(xs:base64Binary("")))}} returns <code>47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=</code>.
 
|}
 
|}
  
==util:hash==
+
==hash:hash==
{|
+
{| width='100%'
 
|-
 
|-
| width='90' | '''Signatures'''
+
| width='120' | '''Signatures'''
|{{Func|util:hash|$value as xs:string, $algorithm as xs:string|xs:hexBinary}}<br />
+
|{{Func|hash:hash|$value as xs:anyAtomicType, $algorithm as xs:string|xs:base64Binary}}<br />
 
|-
 
|-
 
| '''Summary'''
 
| '''Summary'''
|Computes the hash of the given string {{Code|$value}}, using the specified {{Code|$algorithm}}.<br />The following three algorihms are supported: {{Code|MD5}}, {{Code|SHA-1}}, and {{Code|SHA-256}}.
+
|Computes the hash of the given {{Code|$value}}, using the specified {{Code|$algorithm}}. The specified values may be of type xs:string, xs:base64Binary, or xs:hexBinary.<br />The following three algorihms are supported: {{Code|MD5}}, {{Code|SHA-1}}, and {{Code|SHA-256}}.
 
|-
 
|-
 
| '''Errors'''
 
| '''Errors'''
|{{Error|HASH0001|#Errors}} the specified hashing algorithm is unknown.
+
|{{Error|algorithm|#Errors}} the specified hashing algorithm is unknown.
 
|-
 
|-
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
* {{Code|util:md5("", "MD5")}} returns {{Code|'D41D8CD98F00B204E9800998ECF8427E'}}.
+
* {{Code|string(xs:hexBinary(hash:hash("", "MD5")))}} returns {{Code|D41D8CD98F00B204E9800998ECF8427E}}.
* {{Code|util:md5("", "")}} raises an error.
+
* {{Code|string(hash:hash("", ""))}} raises an error, because no algorithm was specified.
|}
 
 
 
==util:hash-binary==
 
{|
 
|-
 
| width='90' | '''Signatures'''
 
|{{Func|util:hash-binary|$value as xs:string, $algorithm as basex:binary|xs:hexBinary}}<br />
 
|-
 
| '''Summary'''
 
|Computes the hash of the given binary item ({{Code|xs:base64Binary}}, {{Code|xs:hexBinary}}), using the specified {{Code|$algorithm}}.<br />The following three algorihms are supported: {{Code|MD5}}, {{Code|SHA-1}}, and {{Code|SHA-256}}.
 
|-
 
| '''Errors'''
 
|{{Error|HASH0001|#Errors}} the specified hashing algorithm is unknown.
 
|-
 
| '''Examples'''
 
|{{Code|util:md5(xs:hexBinary(""), "MD5")}} returns {{Code|D41D8CD98F00B204E9800998ECF8427E}}.
 
 
|}
 
|}
  
Line 90: Line 73:
  
 
{| class="wikitable" width="100%"
 
{| class="wikitable" width="100%"
! width="5%"|Code
+
! width="110"|Code
! width="95%"|Description
+
|Description
 
|-
 
|-
|{{Code|HASH0001}}
+
|{{Code|algorithm}}
|The specified hashing algorithm is unknown.
+
|The specified hash algorithm is unknown.
 
|}
 
|}
  
 
=Changelog=
 
=Changelog=
  
This module was introduced with Version 7.3.
+
;Version 9.0
 +
 
 +
* Updated: error codes updated; errors now use the module namespace
  
[[Category:XQuery]]
+
The module was introduced with Version 7.3.

Revision as of 12:23, 24 May 2018

This XQuery Module provides functions that perform different hash operations.

Conventions

All functions and errors in this module are assigned to the http://basex.org/modules/hash namespace, which is statically bound to the hash prefix.

Functions

hash:md5

Signatures hash:md5($value as xs:anyAtomicType) as xs:base64Binary
Summary Computes the MD5 hash of the given $value, which may be of type xs:string, xs:base64Binary, or xs:hexBinary.
Examples
  • string(xs:hexBinary(hash:md5("BaseX"))) returns 0D65185C9E296311C0A2200179E479A2.
  • string(hash:md5(xs:base64Binary(""))) returns 1B2M2Y8AsgTpgAmY7PhCfg==.

hash:sha1

Signatures hash:sha1($value as xs:anyAtomicType) as xs:base64Binary
Summary Computes the SHA-1 hash of the given $value, which may be of type xs:string, xs:base64Binary, or xs:hexBinary.
Examples
  • string(xs:hexBinary(hash:sha1("BaseX"))) returns 3AD5958F0F27D5AFFDCA2957560F121D0597A4ED.
  • string(hash:sha1(xs:base64Binary(""))) returns 2jmj7l5rSw0yVb/vlWAYkK/YBwk=.

hash:sha256

Signatures hash:sha256($value as xs:anyAtomicType) as xs:base64Binary
Summary Computes the SHA-256 hash of the given $value, which may be of type xs:string, xs:base64Binary, or xs:hexBinary.
Examples
  • string(xs:hexBinary(hash:sha256("BaseX"))) returns 15D570763DEB75D728BB69643392873B835CCCC94A2F1E881909DA47662821A3.
  • string(hash:sha256(xs:base64Binary(""))) returns 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=.

hash:hash

Signatures hash:hash($value as xs:anyAtomicType, $algorithm as xs:string) as xs:base64Binary
Summary Computes the hash of the given $value, using the specified $algorithm. The specified values may be of type xs:string, xs:base64Binary, or xs:hexBinary.
The following three algorihms are supported: MD5, SHA-1, and SHA-256.
Errors algorithm: the specified hashing algorithm is unknown.
Examples
  • string(xs:hexBinary(hash:hash("", "MD5"))) returns D41D8CD98F00B204E9800998ECF8427E.
  • string(hash:hash("", "")) raises an error, because no algorithm was specified.

Errors

Code Description
algorithm The specified hash algorithm is unknown.

Changelog

Version 9.0
  • Updated: error codes updated; errors now use the module namespace

The module was introduced with Version 7.3.