.UTIL COMPUTE HASH
This subroutine computes the SHA-2 hash value for the given string. APPX 5.4.5 & higher only.
Usage:
* PASS <hash value returned> FIELD SHARE? Y
* PASS <hash type> FIELD SHARE? N
* PASS <Data to hash> FIELD SHARE? N
* PASS <Unicode flag> FIELD SHARE? N
* GOSUB --- .UTIL COMPUTE HASH
* Check for errors
* IF --- .UTIL COMPUTE HASH NE
Description:
This subroutine computes the SHA-2 hash value for the given string. The first 2 parameters are required and if any required parameters are missing, the subroutine will CANCEL.
<hash value returned> is the computed value returned. This must be passed with Share="Y" to return a value. It should be an alpha field at least 64 or 128 bytes in length, depending on the <hash type> requested (Required).
<hash type> is the type of hash value you want returned (Required):
- BIN for a 64 byte binary value
- UC for a 128 byte readable value, upper case
- LC for a 128 byte readable value, lower case
<Data to hash> is the string to be hashed (32k max size).
<Unicode flag> Pass UNI if you want the calculation performed on a Unicode field (optional, Release 6.0 and higher only). For compatibility with release 5, the hash calculation is performed on a RAW field. PASSing a unicode field in <Data to hash> that contains characters that cannot be transcoded to the RAW encoding will result in a runtime error. To force the calculation to be performed on the Unicode field, pass UNI for <Unicode flag>. Note that since RAW and Unicode fields have different internal structures, passing the same string with and without the <Unicode Flag> will return different hash values.
Comments:
Read what other users have said about this page or add your own comments.
Editorial comment: This API provides a great way to overcome the APPX 256-character key length limitation. If your desired key is a field longer than 256 (such as a server file path or a group of many fields), or if it will be longer than 256 when the primary key is appended, pass the desired key value into this subroutine and use the resulting 128-byte value as your guaranteed unique key.
--
Al Kalter - 2016-11-07
--
JeanNeron - 2012-03-08