Что нового

[Криптография] Расшифровать файл в переменную - 2

eus_deus

Новичок
Сообщения
118
Репутация
0
Уважаемые форумчане!
Хотел спросить в существующей теме, но там написало, что тема старая, и лучше создать...
Задача - расшифровать файл в переменную, довольно большой (около 800 строк). Потом будет выборка с этой переменной для дальнейшей работы.
Для шифрования использую
Код:
#Include <Crypt.au3>
_Crypt_Startup()
_Crypt_EncryptFile("d:\test.txt", "d:\test.hash", "12345", $CALG_RC4)
_Crypt_Shutdown()

Для расшифровки - в начале скрипта код:
Код:
#include <Crypt.au3>
Global $ComFile=@ScriptDir&"\test.hash"
$File=FileOpen ($ComFile)
$sData = _Crypt_DecryptData(FileRead($File), "12345", $CALG_RC4)
MsgBox(4096, "Decrypted data", BinaryToString($sData))

И в итоге - на выходе такая чепуха... Нешифрованный файл в кодировке utf 16 le
Спасибо
 
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
Inni, я пробовал все значения - от 1 до 4. Только иероглифы разные на выходе, но исходного текста нет
 

СН3СН2ОН

Знающий
Сообщения
78
Репутация
12
Краткий вывод - нужно знать начальную кодировку файла. Либо привести к единой (логично).
Вывод 2: жали файл, разжимаем в память - не работает, жали файл, разжимаем в файл - работает. Значит...

Этот код работает на ANSI
Код:
#Include <Crypt.au3>
_Crypt_Startup()
_Crypt_EncryptFile("d:\test\test.txt", "d:\test\test.hash", "12345", $CALG_RC4)
_Crypt_Shutdown()

_Crypt_Startup()
_Crypt_DecryptFile("d:\test\test.hash", "d:\test\test2.txt", "12345", $CALG_RC4)
_Crypt_Shutdown()

Global $ComFile="d:\test\test.hash"
$File=FileOpen($ComFile,16)
$sData = _Crypt_DecryptData(FileRead($File), "12345", $CALG_RC4)
MsgBox(4096, "Decrypted data", BinaryToString($sData))

Этот на UTF-8
Код:
#Include <Crypt.au3>
_Crypt_Startup()
_Crypt_EncryptFile("d:\test\test.txt", "d:\test\test.hash", "12345", $CALG_RC4)
_Crypt_Shutdown()

_Crypt_Startup()
_Crypt_DecryptFile("d:\test\test.hash", "d:\test\test2.txt", "12345", $CALG_RC4)
_Crypt_Shutdown()

Global $ComFile="d:\test\test.hash"
$File=FileOpen($ComFile,16)
$sData = _Crypt_DecryptData(FileRead($File), "12345", $CALG_RC4)
MsgBox(4096, "Decrypted data", BinaryToString($sData,4))
 
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
Начальная кодировка известна, UTF16 LE. Дело оказалось в строке
СН3СН2ОН сказал(а):
С ней и с указанной выше Inni поправкой
Код:
BinarytoString ($sData, 2)

все вроде как надо, по крайней мере в переменной читаемый текст. Спасибо, тема решена
 
Верх