AES — это алгоритм с симметричным ключом, поэтому вы создаете ключ только один раз, а затем сохраняете его как секрет в своей конфигурации (например, в области APPLICATION
). Если ключ изменится, вы больше не сможете расшифровать ранее зашифрованные данные.
Шаг 1
Создайте ключ AES, используя <cfoutput>#generateSecretKey("AES")#</cfoutput>
. Нет необходимости иметь эту строку где-либо в вашей кодовой базе, поскольку вы, вероятно, никогда не измените этот ключ (по крайней мере, не для этого веб-приложения).
Сгенерированный ключ представляет собой случайную комбинацию из 16 байт (128 бит), закодированную в виде строки Base64. ColdFusion обычно никогда не ожидает массив байтов, поэтому вы можете работать с закодированными значениями для encrypt
и decrypt
. Это может выглядеть примерно так: k1+pzMg/rqmbVGfI5MOf8Q==
Обратите внимание на +
и /
? Они являются частью Base64, и вам не о чем беспокоиться, но я всегда рекомендую вам сворачиваться до тех пор, пока вы не получите красивую строку для копирования и вставки, например: YncQUYZYdPez360xNmq2tw==
Шаг 2
Сохраните сгенерированный ключ как значение в кодировке Base64 в конфигурации вашего веб-приложения. Если у вас есть Application.cfc
, вы можете записать его в функцию onApplicationStart
. Или, если у вас все еще есть Application.cfm
, запишите его прямо туда:
<cfset APPLICATION.AesKeyForMails = "YncQUYZYdPez360xNmq2tw==">
Конечно, вы также можете просто <cfinclude>
конфигурационный файл с переменной (не используйте тогда APPLICATION
). Все, что работает лучше всего для вас.
Шаг 3
Зашифруйте электронное письмо с помощью сохраненного ключа:
<cfset encryptedMail = encrypt("[email protected]", APPLICATION.AesKeyForMails, "AES/CBC/PKCS5Padding", "HEX")>
Это вернет зашифрованные данные (массив байтов) и представит их в виде строки в кодировке HEX, например: A0E2D61277EE1966CDD571B25A8B088E81AF7953B52BBE086C5079A8565D3D718DC572474A0C7DEF5BFC2F8F90CC464B
Обратите внимание, что это значение будет меняться при каждом вызове из-за цепочки блоков (режим CBC). Но не волнуйтесь, все они могут быть расшифрованы одинаково. (Если вы укажете только AES
для параметра алгоритма, он использует режим ECB, всегда возвращая один и тот же результат, который считается менее безопасным.)
Шаг 4
Расшифруйте зашифрованное электронное письмо с помощью сохраненного ключа:
<cfset decryptedMail = decrypt("A0E2D61277EE1966CDD571B25A8B088E81AF7953B52BBE086C5079A8565D3D718DC572474A0C7DEF5BFC2F8F90CC464B", APPLICATION.AesKeyForMails, "AES/CBC/PKCS5Padding", "HEX")>
И вот: [email protected]
person
Alex
schedule
10.03.2021
decrypt
то, чтоencrypt
вернуло? - person user 9014097   schedule 11.03.2021