Skip to main content
16-Pearl
April 9, 2025
Solved

SHA256 hashing in ThingWorx service

  • April 9, 2025
  • 1 reply
  • 1215 views

For a service I need to compare a SHA256 hashed value with a value of a ThingWorx property.

As ThingWorx only knows the actual value, I need to SHA256 it to be able to compare it to the value I receive.

 

Is there a built-in service that can do this?


I have only seen EncryptionServices which don't really help, as I am not interested in Encryption but only Hashing. Ideally I wouldn't want to move this out to an external library (or Java-SDK service).

Best answer by mneumann

Thank you!
As mentioned an extension is nothing I am aiming for right now.

I was following the (corrected) solution in https://stackoverflow.com/questions/59777670/how-can-i-hash-a-string-with-sha256

This allows me to have a custom service that can handle the hashing directly, without going with an extension.

1 reply

Rocko
19-Tanzanite
April 9, 2025

@mneumann wrote:

Is there a built-in service that can do this?


Not that I know of. You could try to find a JS implementation and put that into a service.

The alternative: Thingworx already comes with commons-codec, so you would just have to expose their services, specifically

DigestUtils.sha256Hex(originalString);

That would mean writing an extension with a thing that calls this method and exposes it as a @ThingworxService. 

mneumann16-PearlAuthorAnswer
16-Pearl
April 10, 2025

Thank you!
As mentioned an extension is nothing I am aiming for right now.

I was following the (corrected) solution in https://stackoverflow.com/questions/59777670/how-can-i-hash-a-string-with-sha256

This allows me to have a custom service that can handle the hashing directly, without going with an extension.

16-Pearl
August 21, 2025

Hello,

 I had a same usecase in the past but i could not find any built in Thingworx implementation for SHA256. As you have mentioned we have Encrpytion services in thingworx but i was also interested in hashing. For that i have used this built in crypto.subtle API which supports SHA 256 in browsers

 

async function sha256(input) {
 const encoder = new TextEncoder();
 const data = encoder.encode(input);
 const hashBuffer = await crypto.subtle.digest("SHA-256", data);
 const hashArray = Array.from(new Uint8Array(hashBuffer));
 const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
 return hashHex;
}

sha256("HelloWorld").then(console.log); 
// -> e.g. "872e4e50ce9990d8b041330c47c9ddd11bec6b503ae9386a99da8584e9bb12c4"

 

Other then that Encrpytion in thingworx is not recommend for migration like if you have saved encrpted values in the datatables then you would not be able to take that data with export. like we had a situation where we have changed our thingworx version/server and then i had this road block and my basetype of that field was password with encrpted value saved in it and now i have removed the encrption and using SHA 256 for comparison.

 

Thank you