Я использовал Inferno для шифрования строки.Шифрование и дешифрование работают, но несколько шифрований в одном байтовом массиве, кажется, всегда приводят к совершенно другому байтовому массиву.
Причина, по которой это проблема, заключается в том, что мне нужно зашифровать путь к файлу, а затем создать егопуть на локальном диске.Если каждый раз по одному и тому же пути генерируется другой байтовый массив, моя программа будет продолжать создавать новые пути.Вот код:
var key = Encoding.UTF8.GetBytes("my key");
var encrypted = System.Web.HttpServerUtility
.UrlTokenEncode(SuiteB.Encrypt(key, @"C:\some\path\to\encrypt".ToBytes().AsArraySegment()));
var decrypted = SuiteB.Decrypt(key,
System.Web.HttpServerUtility.UrlTokenDecode(encrypted).AsArraySegment()).FromBytes();
При первом запуске encrypted
устанавливается на:
hI_n_XrS_UuYR4heaGIfApOVco2fy0AAzU_qm8e7QMdoZg25hY2C1HFQ4w0AAvbQlv5i0DdXs3QuK50K1etHnL7ftfTS9HjLJeNCj4o6X-A-K6BVUivXBiU6DQN06ZgqVzIz3-n00
Если я перетаскиваю курсор отладки обратно к нему, чтобы сгенерировать его снова, яget:
SbOst3-Qe2NqtVSNrFlHzUgQn8N-6PfKTnw4sko4BEcYuyEl7LlHB5wVRerifG9AIwo1pHYJHT57QGuIsgyvdswUjPDSuGM1dF7kUiSMZk3l1wmD3Q-KA-HQwr0yAURAMPRbKpM20
Нет никаких сомнений в логическом и значимом объяснении того, почему он это делает, но 1) я хотел бы понять, почему и 2) есть ли способ заставить его не генерироватькаждый раз другой байтовый массив?
Сначала я хэшировал путь, но оказалось, что мне нужно было получить исходный путь из хешированной версии.Поскольку вы не можете хэшировать хеш, я решил использовать шифрование, чтобы потом расшифровать его.
Примечание: Пришлось создать новый тег inferno
.