Есть несколько вариантов, но они ограничены для вашего кода как конечного пользователя. Определенный разработчик / sysadmin узнает значение в конце концов.
Если вы создадите управляемый пакет, вы можете использовать защищенный пользовательский параметр (код управляемого пакета может видеть его, но не код клиента, даже sysadmins)
Отметьте некоторые из них:
Можно выполнить пользовательскую настройку с 2 текстовыми полями, 1 с ключом шифрования и 1 с зашифрованным ценность в этом. Посмотрите на Crypto class.
Blob exampleIv = Blob.valueOf('Example of IV123');
Blob key = Crypto.generateAesKey(128);
Blob data = Blob.valueOf('Data to be encrypted');
Blob encrypted = Crypto.encrypt('AES128', key, exampleIv, data);
Blob decrypted = Crypto.decrypt('AES128', key, exampleIv, encrypted);
String decryptedString = decrypted.toString();
System.assertEquals('Data to be encrypted', decryptedString);
Ваш вектор инициализации может быть идентификатором org или чем-то еще, что легко доступно и вряд ли изменится (я не знаю, есть ли у API вашего поставщика тест и конечные точки prod, но это дополнительный бонус, что после обновления песочницы sh он не сможет расшифровать ОК, пока вы не измените пользовательскую настройку (вы не захотите отправлять тестовые сообщения в рабочий API), вы сгенерируете ключ один раз и сохраните его в настройках.