Вверх ↑
Этот топик читают: Гость
Ответов: 62
Рейтинг: -1
#1: 2019-01-27 19:18:55 ЛС | профиль | цитата
Всем привет.
Пытаюсь переименовать файлы *.rtf в папке test в зашифрованное название (Алгоритмом RC4) и расширением *.protected
Но чет не получается. Помогите разобраться.


Add(MainForm,2953706,98,154)
{
Width=853
Height=455
link(onCreate,7532332:doSearch,[(184,174)(184,209)])
}
Add(FileSearch,7532332,238,203)
{
Ext="*.rtf"
link(onSearch,14529410:doEvent1,[(300,209)(300,174)])
link(Dir,8501104:Text,[(251,181)(258,181)])
}
Add(Edit,8501104,252,126)
{
Left=250
Top=125
Text="C:\\Users\\test"
}
Add(Hub,14529410,329,168)
{
OutCount=6
link(onEvent1,16476483:doValue,[(364,174)(364,139)])
link(onEvent2,12431052:doEnCrypt,[(375,181)(375,244)])
link(onEvent3,9671917:doStrCat,[(357,188)(357,307)])
link(onEvent4,16357333:doMove,[(367,195)(367,370)])
}
Add(Memory,16476483,448,133)
{
}
Add(EnCrypt,12431052,406,238)
{
Key="111"
link(Data,6638517:Var2,[(412,219)(454,219)])
}
Add(StrCat,9671917,371,301)
{
Str2=".protected"
link(onStrCat,11722321:doAdd,[(450,307)(450,335)])
link(Str1,12431052:Result,[(377,285)(412,285)])
}
Add(FileTools,16357333,385,364)
{
link(FileName,6638517:Var1,[(391,187)])
link(NewFileName,9671917:Result,[(398,348)(377,348)])
}
Add(GetDataEx,6638517,448,182)
{
link(Data,16476483:Value,[])
}
Add(Memo,11722321,497,329)
{
Left=5
Top=10
Width=815
Height=360
}

карма: 0

0
Ответов: 8921
Рейтинг: 823
#2: 2019-01-27 22:19:25 ЛС | профиль | цитата
rektware, вы шифруете ВЕСЬ путь к файлу, надо выделить только имя с расширением или без, шифровать его и лишь затем собирать путь и менять
Да и расширение не слишком-ли длинное?

Редактировалось 1 раз(а), последний 2019-01-27 22:21:23
карма: 19

0
Ответов: 62
Рейтинг: -1
#3: 2019-01-27 22:38:00 ЛС | профиль | цитата
Леонид, Можете накидать как это должно выглядеть?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#4: 2019-01-28 10:37:29 ЛС | профиль | цитата
rektware писал(а):
накидать как это должно выглядеть

должно выглядеть вот так
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 62
Рейтинг: -1
#5: 2019-01-28 10:46:33 ЛС | профиль | цитата
Tad, Спасибо

--- Добавлено в 2019-01-28 11:13:56

Tad, Может схему выложите? А то непонятно, что у Вас указано в компоненте после шифрования "Соединение через разделитель"

Редактировалось 1 раз(а), последний 2019-01-28 11:13:56
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#6: 2019-01-28 12:07:31 ЛС | профиль | цитата
или даже так

Редактировалось 2 раз(а), последний 2019-01-28 12:15:35
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 62
Рейтинг: -1
#7: 2019-01-28 12:09:42 ЛС | профиль | цитата
Tad, Так да, простите, туплю с утра.
карма: 0

0
Ответов: 4628
Рейтинг: 749
#8: 2019-01-28 14:35:52 ЛС | профиль | цитата
Там ещё надо учитывать наличие запрещенных символов в названии файла (/\|?*:<>", и все коды меньше 32).

Редактировалось 3 раз(а), последний 2019-01-28 14:39:47
карма: 26

0
Ответов: 62
Рейтинг: -1
#9: 2019-01-29 11:09:47 ЛС | профиль | цитата
Netspirit, Кстати, да. Не все названия файлов переименовываются на зашифрованное.
Можно это как-то исправить?
карма: 0

0
Ответов: 4628
Рейтинг: 749
#10: 2019-01-29 12:30:08 ЛС | профиль | цитата
rektware писал(а):
Не все названия файлов переименовываются на зашифрованное
Более правильно: "не весь результат шифрования подходит в качестве имени файла". Решение - после шифрования полученное имя перевести в HEX.
карма: 26

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#11: 2019-01-29 12:36:25 ЛС | профиль | цитата
Netspirit писал(а):
Решение - после шифрования полученное имя перевести в HEX

А почему именно в HEX, а в Base64 разве не пойдет или там есть недопустимые символы?

--- Добавлено в 2019-01-29 12:40:27

Да, точно есть -- '/', тогда не пойдет, а жаль. HEX -- нерациональный режим кодировки.

Редактировалось 2 раз(а), последний 2019-01-29 12:40:27
карма: 22

0
Ответов: 4628
Рейтинг: 749
#12: 2019-01-29 13:11:55 ЛС | профиль | цитата
Ну, если кому-то нужно - может свой алфавит для Base64 сделать. Но это уже слишком. Хотя, можно использовать стандартный Base64, а недопустимый символ заменить на любой другой, отсутствующий в Base64. Естественно, для дешифрования выполнить преобразования в обратном порядке ("обратная замена" -> "из Base64" -> "дешифрование").

Редактировалось 2 раз(а), последний 2019-01-29 13:15:15
карма: 26

0
Ответов: 62
Рейтинг: -1
#13: 2019-01-29 13:21:37 ЛС | профиль | цитата
Netspirit, "Решение - после шифрования полученное имя перевести в HEX."
А смысл? Если после шифрования в имени файла будут символы, которые запрещены, то обратно расшифровать не получится
карма: 0

0
Ответов: 4628
Рейтинг: 749
#14: 2019-01-29 13:31:13 ЛС | профиль | цитата
Чепуху не говори. HEX/Base64 для того и предназначен, чтобы весь диапазон байтов выразить меньшим количеством символов (алфавитом), за счет большей длины данных. Без каких-либо потерь.
А алфавит HEX не содержит запрещенных в имени символов (Base64 содержит - выше было упомянуто решение).

Редактировалось 2 раз(а), последний 2019-01-29 13:33:48
карма: 26

0
Ответов: 62
Рейтинг: -1
#15: 2019-01-29 13:50:39 ЛС | профиль | цитата
Netspirit, Получается в base64.pas нужно заменить "/" на любой символ, который допустим в имени файла?
и который больше не используется в base64

Редактировалось 1 раз(а), последний 2019-01-29 13:51:41
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)