Topics   All   Mac OS X (Only)   Windows (Only)   Linux (Only, Not)   iOS (Only, Not)  
Components   Crossplatform Mac & Win   Server   Client   Old   Guides   Examples
New in version: 7.3   7.4   7.5   8.0   8.1   8.2   8.3   8.4   8.5   8.6    Statistic  

Hash.Digest

Calculates a hash of a value.

Component Version macOS Windows Server FileMaker Cloud FileMaker iOS SDK
Hash 4.1 Yes Yes Yes Yes Yes
MBS( "Hash.Digest"; Algorithm; InputType; InputData; InputEncoding; OutputType; OutputInfo )   More

Parameters

Parameter Description Example value
Algorithm Which algorithm to use.
Can be MD4, MD5, SHA, SHA1, MDC2, RIPEMD160, SHA224, SHA256, SHA384 or SHA512.
"SHA512"
InputType The type of input.
Can be Text, Container, Image, Path, PDF, Data, base64 or Hex.
"Text"
InputData The actual input data.
Text, container or file path.
"Hello World"
InputEncoding The text encoding for text input.
Parameter is ignored for other cases.
Possible encoding names: ANSI, Arabic-Mac, Arabic-Win, Baltic-Win, CentralEurope-Mac, ChineseSimp-Mac, ChineseSimp-Win, ChineseTrad-Mac, ChineseTrad-Win, Cyrillic-Mac, Cyrillic-Win, EasternEurope-Win, Greek-Mac, Greek-Win, Hebrew-Mac, Hebrew-Win, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-15, Korean-Johab, Korean-Mac, Korean-Win, Latin1, Mac, Native, ShiftJIS-Mac, ShiftJIS-Win, Turkish-Mac, Turkish-Win, UTF-8, DOS or Windows. Pass native to use the native encoding of the current platform.
"UTF-8"
OutputType The output type.
Can be Base64, Hex, Text, File, Path.
"Hex"
OutputInfo The addition info for output.
For text it is the text encoding, for file container the file name and for path the actual native file path.
""

Result

Returns error or hash.

Description

Calculates a hash of a value.
Input can be one of different types:
  • Text, you pass "text", your text and the text encoding. If no or invalid encoding name is passed, the native one is used. The encoding can be one of the following strings: ansi, windows, mac, latin1, utf8, dos or native.
  • PDF, you pass the container with the PDF file inside.
  • Image, you pass the container with an image file (JPEG, GIF, TIFF, PNG, PICT).
  • Data, you pass container and plugin looks for the file data inside.
  • Hex, you pass a hex encoded text.
  • Base64, you pass a base64 encoded text.
  • Path, you pass the file path to a file to read.
  • Container, you pass a container which is packed with all its content.
Now for output we can return the digest in various ways:
  • Text, we return the hash as text in the encoding. This is not recommended for hash values. OutputInfo parameter is text encoding.
  • Base64, the hash is returned as base64 encoded text.
  • Hex, the hash is returned as hex encoded text.
  • File, the hash is returned as a container value with a file inside containing the hash. OutputInfo parameter is the filename to be stored in the container value.
  • Path, the hash is written to a file. In the OutputInfo parameter you provide a native file path.
  • JPEG, a container with a JPEG image.
  • GIF, a container with a GIF image.
  • TIFF, a container with a TIFF image.
  • PNG, a container with a PNG image.

Possible digest engines:
DSA-SHA, DSA, MD5, MDC2, RIPEMD160, SHA, SHA1, SHA224, SHA256, SHA384 or SHA512.

This function requires a native path. Use Path.FileMakerPathToNativePath to convert a FileMaker path to a native path if required. If you like to have the user choose the path, you can use FileDialog functions.
For Server be aware that server has limited permissions and may not be able to access all files on a computer.

Examples

Calculate MD5 from text:

MBS( "Hash.Digest"; "MD5"; "Text"; "Hello World"; "UTF-8"; "Hex"; "" )

Calculate SHA512 from image in container and encode it as base64:

MBS( "Hash.Digest"; "SHA512"; "Image"; MyTable::MyContainer; ""; "Base64"; "" )

Hash of PDF in container:

MBS( "Hash.Digest"; "SHA512"; "PDF"; MyTable::MyContainer; ""; "Hex"; "" )

Hash a file with MD5:

MBS( "Hash.Digest"; "MD5"; "Path"; "/Users/cs/Desktop/test.fmp12"; ""; "Hex"; "" )

Stream file to AWS:

# Build a path to file (local) and in AWS
Set Variable [ $Filename ; Value: "test.pdf" ]
Set Variable [ $Path ; Value: "/" & $BucketName & "/PDF/" & $Filename ]
Set Variable [ $localPath ; Value: "/Users/cs/Desktop/license.pdf" ]
# calculate hash for file to upload
Set Variable [ $HashedPayload ; Value: Lower(MBS( "Hash.Digest"; "sha256"; "path"; $localPath; ""; "hex" )) ]
# upload
Set Variable [ $curl ; Value: MBS("CURL.New") ]
# file content is streamed
Set Variable [ $result ; Value: MBS("CURL.OpenInputFile"; $curl; $localPath) ]
# setup AWS
Set Variable [ $result ; Value: MBS("CURL.SetupAWS"; $curl; $AWSAccessKeyId; $AWSSecretAccessKey; $Region; $Service; $Path; $Domain; $Verb; $HashedPayload; $headers) ]
Set Field [ CURL Test::Result ; MBS("CURL.Perform"; $curl) ]
Set Field [ CURL Test::debug ; MBS("CURL.GetDebugAsText"; $curl) ]
Set Variable [ $result ; Value: MBS("CURL.Cleanup"; $curl) ]

See also

Example Databases

Blog Entries

Created 18th August 2014, last changed 1st September 2017


Hash.CRC32   -   Hash.MD5

Feedback: Report problem or ask question.




Links
MBS Xojo Plugins