Получение данных из зашифрованного текстового файла? - PullRequest
0 голосов
/ 23 декабря 2010

Допустим, у меня есть текстовый файл, содержащий мои данные.

data :
ab
bc
de

-

encrypted data on text file :
ba
cb
ed

Я хочу найти bc из текстового файла, поэтому мне нужно расшифровать текстовый файл с помощью этого кода:

SL:=TStringList.create;
SL.LoadFromFile(textfile)

SLtemp:=TStringList.create;

for I := 0 to SL.Count - 1 do
SLtemp.Add(ReverseString(SL[i])); //decrypt

SL.Free;

for I := 0 to SLtemp.Count - 1 do
if SLtemp[i] = 'bc' then
begin
showmessage('found');
break;
end;
SLtemp.Free;

Я думаю, что мой способ тратить ресурсы. Я должен загрузить весь файл в память и расшифровать их. Мне нужны некоторые предложения, чтобы быстро найти конкретную строку из зашифрованного текста.

Спасибо.

Ответы [ 3 ]

6 голосов
/ 23 декабря 2010

Звучит так, будто вы пытаетесь создать какую-то базу данных. SQLite имеет прозрачную поддержку шифрования с индексами. Поверьте мне, ваша база данных будет плохой, если вы не введете в нее man- years .

Чтобы действительно решить проблему, вы должны создать (зашифровать) индексы, расшифровав каждую строку и проиндексировав их. Вы должны быть очень хорошо знакомы со стратегиями индексирования, если вы работаете с данными с учетом производительности.

Но сначала спросите себя, достаточно ли велики данные, чтобы хотя бы иметь значение? Если он работает за одну десятую секунды, то запускать его за сотую часть бессмысленно. Если это займет неделю, это признак того, что вы все равно безнадежно на неправильном пути, и небольшая оптимизация мало поможет.

Извините, если это немного грубо, особенно от кого-то, кто внедрил несколько баз данных доморощенного.

2 голосов
/ 23 декабря 2010

Если вы не намеренно разделите блоки шифрования для каждого элемента, который хотите найти (что является вполне жизнеспособным вариантом), вам придется как минимум расшифровывать половину файла каждый раз (в среднем).

Вы можете либо зашифровать строку за строкой (как я уже сказал, это вполне возможно), зашифровать текст поиска, а затем просто найти строку, которая соответствует.

В противном случае вам придется расшифровать файл и выполнить поисквывод процесса дешифрования для строки поиска.Если вы можете искать выходные данные, пока шифрование еще продолжается, вы, вероятно, сможете остановить дешифрование на раннем этапе, когда найдете текст.

Мне нравится идея зашифрованной базы данных из SilverbackNet, и я согласен, что вы не должны проверятьтвой собственный.Вам также может потребоваться убедиться, что индекс также зашифрован, если база данных не позаботится об этих деталях (это должно быть)

1 голос
/ 23 декабря 2010

Если ваш процесс шифрования выполняется по одной строке за раз.Почему бы вам не зашифровать ключевое слово "bc" в "cb", а затем найти его?(без расшифровки всего файла)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...