Sunday 26 January 2014

Encrypting the XML response from External System In Custom Field Using AES 256 Algorithm

Encrypting the data via crypto classes in apex language is fun and below are the few articles links on developer force that really help us understand better.

http://wiki.developerforce.com/page/Apex_Crypto_Class

http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_restful_crypto.htm

Having read the above document one can easily be of opinion thats its too easy with few lines of code to encrypt data using AES 256 and also same can be stored in a field via an apex trigger .It is not so simple when it comes to storing this data into the custom field .

From the above code ,the problem arises when we start thinking on how to store the encrypted  blob data into the field of object .We dont have any field of data type blob in sfdc and thats were my problem  began and hence this blog for people looking for solution around how to store the blog in a Long Text Field and then how to decrypt the same .


The above code will trigger an exception as below





So now the question ,how will i be able to store the encrypted data in string format from the BLOB ?

There are couple of ways to do this ,but shortest ,the best

1)Convert BLOB data to HEX and store in field and then convert HEX back to string.There is lack of methods to do this till date but comming spring 14 release has a new method and much needed for these kind of problem.Once my org will be up with spring 14 i will try this method

Blob blobValue = EncodingUtil.convertFromHex('4A4B4C');

System.assertEquals('JKL', blobValue.toString());


Intresting but its coming in next release

2)Store the data inform of base64Encoded String and later use this and decode and then decrypt



The above code compiles and now lets decrypt and retrieve the original data

The below diagram summarizes the process


Reference:

https://help.salesforce.com/apex/HTViewSolution?urlname=How-do-you-convert-a-Blob-to-string-1327108626373&language=en_US

No comments:

Post a Comment

Introducing Lightning Base Components

Lightning Base Components are great addition to the platform and in fact revolutionary .One of the concerns around lightning component ...