public static String decryptKey(String encryptedKey) {
String b64 = encryptedKey.replaceAll('[_]', '/').replaceAll('[-]', '+');
Integer mod = Math.mod(b64.length(), 4);
if (mod > 0) {
b64 += String.valueOf('===='.substring(0, 4 - mod));
}
Blob encryptedBlob = EncodingUtil.base64Decode(b64);
Blob keyBlob = EncodingUtil.base64Decode(Helpers.getEncryptionKey());
Blob decryptedBlob = Crypto.decryptWithManagedIV('AES256', keyBlob, encryptedBlob);
String decryptedString = decryptedBlob.toString();
if (decryptedString.startsWith('.')) {
decryptedString = decryptedString.substring(1);
}
return decryptedString;
ICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGRlY3J5cHRLZXkoU3RyaW5nIGVuY3J5cHRlZEtleSkgewogICAgICAgIFN0cmluZyBiNjQgPSBlbmNyeXB0ZWRLZXkucmVwbGFjZUFsbCgnW19dJywgJy8nKS5yZXBsYWNlQWxsKCdbLV0nLCAnKycpOwogICAgICAgIEludGVnZXIgbW9kID0gTWF0aC5tb2QoYjY0Lmxlbmd0aCgpLCA0KTsKICAgICAgICBpZiAobW9kID4gMCkgewogICAgICAgICAgICBiNjQgKz0gU3RyaW5nLnZhbHVlT2YoJz09PT0nLnN1YnN0cmluZygwLCA0IC0gbW9kKSk7CiAgICAgICAgfQogICAgICAgIEJsb2IgZW5jcnlwdGVkQmxvYiA9IEVuY29kaW5nVXRpbC5iYXNlNjREZWNvZGUoYjY0KTsKICAgICAgICBCbG9iIGtleUJsb2IgPSBFbmNvZGluZ1V0aWwuYmFzZTY0RGVjb2RlKEhlbHBlcnMuZ2V0RW5jcnlwdGlvbktleSgpKTsKICAgICAgICBCbG9iIGRlY3J5cHRlZEJsb2IgPSBDcnlwdG8uZGVjcnlwdFdpdGhNYW5hZ2VkSVYoJ0FFUzI1NicsIGtleUJsb2IsIGVuY3J5cHRlZEJsb2IpOwogICAgICAgIFN0cmluZyBkZWNyeXB0ZWRTdHJpbmcgPSBkZWNyeXB0ZWRCbG9iLnRvU3RyaW5nKCk7CiAgICAgICAgaWYgKGRlY3J5cHRlZFN0cmluZy5zdGFydHNXaXRoKCcuJykpIHsKICAgICAgICAgICAgZGVjcnlwdGVkU3RyaW5nID0gZGVjcnlwdGVkU3RyaW5nLnN1YnN0cmluZygxKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlY3J5cHRlZFN0cmluZzsK