Cryptographic Hash Functions

Overview

This plug-in contains functions that can perform the following:

  • Create hex encoded hashes for md5, sha1, sha256, and sha512 algorithms
  • Generate hashes with secret key for HMAC
  • Generate hashes of documents
  • Generate a signature key

Key Features & Functionality

This listing currently represents version 2.3.0 of the plug-in.  The functions included are as follows:

  1. md5hash(Text)
  2. md5hashdocument(Document)
  3. sha1hash(Text)
  4. sha1hashdocument(Document)
  5. sha224Hash
  6. sha256hash(Text)
  7. sha256hashdocument(Document)
  8. sha512hash(Text)
  9. sha512hashdocument(Document)
  10. hmacmd5hash(Key, Text)
  11. hmacmd5hashdocument(Key, Document)
  12. hmacsha1hash(Key, Text
  13. hmacsha1hashdocument(Key, Document)
  14. hmacsha256hash(Key, Text)
  15. hmacsha256hashdocument(Key, Document)
  16. hmacsha512hash(Key, Text)
  17. hmacsha512hashdocument(Key, Document)
  18. getSignatureKey(key, dateStamp, regionName, serviceName)  
    • Added in version 2.0.0 to assist with AWS integrations
    • Added support for secure credentials store in version 2.1.0
  19. hmacsha256bytehash
  20. getAwsV4Signature
  21. hmacSHA256HexKeyBase64(Key, Text)

Example Use:

  • Rule Definition: md5Hash(ri!string)
  • Rule Output: 63b03e21a6f184cfd36247b5dc0e86cf
Anonymous
  • Hello! I've seen that you guys have recently added the sha224Hash function. We're looking for ways to do encryptions in Appian and we've come across your plugin. We could see that your plugin has plenty of these functions except for shat384. Do you think it could be possible to add this encryption function to your plugin?

  • v3.1.0 Release Notes
    • added sha224Hash function

  • Good afternoon,

    I am encrypting a simple text to test with hmacsha256bytehash, but I can't find any functionality to decrypt it, could you help me?

    Thank you so much

  • Hi  Could you please let me know how you generated Shared Access Signature in Appian using this plugin? Because I used this plugin to generate SAS for Azure BLOB using the below code but the authorization header fails. Can you debug below code and let me know what i miss

    local!sampleSign:"GET\n\n\n\n\n\n\n\n\n\n\n\nx-ms-date:Fri, 23 Feb 2024 16:10:38 GMT\nx-ms-version:2015-04-05\n/mystorageaccount/mycontainer/myfilenamewithext",
    local!base64Key: decodebase64string(/*Access Key of Storage Account*/),
    local!unicodeSign: code(local!sampleSign),/*UTF-8 conversion*/
    local!hashKey: hmacsha256bytehash(
    key: local!base64Key,
    scsValue:{""},
    string: local!unicodeSign,
    returnBase64: true
    ),
    { touniformstring(local!hashKey) }

  • v3.0.0 Release Notes
    • removed the usage of deprecated APIs in Appian 23.2 and above

  • Hi Raymond,

    While performing a health check check on Appian 20.3 I got following alert related to this plugin.

    Cryptographic Hash Functions (com.appiancorp.psshared) references deprecated Appian APIs
    [deprecated] com.appiancorp.suiteapi.common.exceptions.AppianException.<init>(java.lang.String)

    This plugin is working fine in 20.3. Will 20.4 upgrade has any impact on working of this plugin.

    Could you please comment on it.

    Thanks

    Amit Chaugule

  • Hi Stefan, did you ever find a solution? We're trying to do the same thing with Azure Storage API SAS, which also provides a base64 encoded key.

  • Hi Ed,

    Please try with just the id of the document; this documentId will be used in the class to load the document by the Id

  • I am having some issue using the sha1hashdocument function.  I can get a value with sha1hash(todocument(43763)) but is not the correct hash value.

    What am I missing?

    usage (where 43763 is the appian document id): 

      sha1hashdocument(todocument(43763))

    getting the following error:

    Expression evaluation error at function 'sha1hashdocument': The passed parameter(s) are of the wrong type. Received the type com.appiancorp.common.xml.JaxbConversionException: JAXB was not able to produce a value for typed value TypedValue[it=13,v=43763] as java class java.lang.Long.

  • Hi Eliot, this plugin was of great help when integrating to the Azure Service Bus. Now we need to talk to Azure Cosmos DB and they found, annoyingly, another way of building auth tokens The key itself is base64 encoded and must be decoded before usage. See https://docs.microsoft.com/de-de/rest/api/cosmos-db/access-control-on-cosmosdb-resources?redirectedfrom=MSDN. I did not find a way to do that in Appian. Any ideas? I almost don't dare to ask if you can add another function to the plugin.