Encryption, is the process of changing information in such a way as to make it unreadable by anyone except those possessing special knowledge (usually referred to as a "key") that allows them to change the information back to its original, readable form.
To encrypt some value we have to use some key value that can be hard coded or we can generate key also by using this
Blob cryptoKey = Crypto.generateAesKey(256);
We have to use same key to decrypt that value.
Here I am going to share some code.Hope it will help you. I have created one visualforce page and one controller. In the page only one field(Name) is there and two button(Save & Update).
When some value is entered in the name field and clicked on save button that value will be stored in the object encrypted format.
Now record id in the url and click on update button encrypted value will be converted in to original format.
To encrypt some value we have to use some key value that can be hard coded or we can generate key also by using this
Blob cryptoKey = Crypto.generateAesKey(256);
We have to use same key to decrypt that value.
Here I am going to share some code.Hope it will help you. I have created one visualforce page and one controller. In the page only one field(Name) is there and two button(Save & Update).
When some value is entered in the name field and clicked on save button that value will be stored in the object encrypted format.
Now record id in the url and click on update button encrypted value will be converted in to original format.
Visualforce page
<apex:page standardController="EnCrypt_Decrypt__c" extensions="EncryptExtension">
<apex:form >
<apex:pageBlock >
<apex:pageBlockSection >
<apex:inputField value="{!encrypt.Name}"/>
<apex:commandButton value="Save" action="{!Save}"/>
<apex:commandButton value="Update" action="{!test}"/>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
Apex Controller
public class EncryptExtension {
public EnCrypt_Decrypt__c encrypt{get;set;}
//Blob cryptoKey;
Blob cryptoKey = Blob.valueOf('380db410e8b11fa9');
public Id recordId{get;set;}
public EncryptExtension(ApexPages.StandardController controller) {
//cryptoKey = Crypto.generateAesKey(256);
recordId = Apexpages.CurrentPage().getParameters().get('id');
if(recordId !=null){
encrypt = [SELECT id,Name From EnCrypt_Decrypt__c
WHERE id=:recordId];
}
else{
encrypt = new EnCrypt_Decrypt__c();
}
}
public PageReference Save(){
Blob data = Blob.valueOf(encrypt.Name);
Blob encryptedData = Crypto.encryptWithManagedIV('AES128', cryptoKey , data );
String b64Data = EncodingUtil.base64Encode(encryptedData);
encrypt.name = b64Data ;
insert encrypt;
return null;
}
public PageReference test(){
//Blob cryptoKey = Crypto.generateAesKey(256);
//Blob data = Blob.valueOf(encrypt.Name);
Blob data = EncodingUtil.base64Decode(encrypt.Name);
Blob decryptedData = Crypto.decryptWithManagedIV('AES128', cryptoKey , data);
String dryptData = decryptedData.toString();
System.debug('Printing dryptData '+dryptData);
encrypt.name = dryptData;
update encrypt;
return null;
}
}
Referece Link: http://salesforce.stackexchange.com/questions/25636/how-to-encrypt-and-decrypt-a-string-in-apex-using-the-crypto-class
No comments:
Post a Comment