We wanted to use Data Loader CLI (scheduled nightly) to push records into SFDC from a CSV file; however one key requirement is to encrypt (using AES256) while the data is pushed from the Data Loader into SFDC (ie. while in transit). How do we achieve this?
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
When you set the endpoint in the dataloader make sure you use https://login.salesforce.com and it will use a SSL/TLS connection.
Salesforce uses RC4 with 128 bit keys for their SSL implementation (you can check this by going to the login page in your browser and hitting the lock icon) which should be secure enough for most purposes.
If you absolutely must use AES256 for compliance or other reasons you won't be able to use the data loader and I am not aware of any third-party solutions that do this.
You will need to encrypt your data yourself and then create a REST or webservices method that takes your encrypted data, decrypts it, and saves it to salesforce. The Apex Crypto class has support for AES256 so decrypting it should not be a problem.
I'd question the rational behind encrypting data prior to being transferred over an SSL connection.
Especially since people would then be viewing the data using the web browser over the same SSL secured connection, what you've carefully encrypted for upload using AES256 and a custom web service you built will be 'revealed' the first time someone logs on at looks at a web page or report
Are you sure your requirement isn't for Encrypted Fields, that is, that the data be AES Encrypted inside Salesforce? See https://login.salesforce.com/help/doc/en/fields_about_encrypted_fields.htm
If your requirement is indeed to encrypt the data for transport you are going to need to use a third party application to encrypt the data and push it to a custom webservice on Salesforce which will then decrypt and store it. However I would ask how much data (records) are you pushing, because you're likely to get orders of magnitude lower throughput than you would have got using the Bulk API for data uploads.