Я работаю над OSX-приложением с использованием Objective-C, и одна из вещей, которую мне нужно сделать, это чтение текстовых/xml-файлов, которые были зашифрованы на компьютере под управлением Windows, используя простой бит - алгоритм сдвига. Код шифрования на стороне Windows, достаточно прост, в Delphi:Objective-c: прочитать файл, зашифрованный в Windows
const
EncryptKey : word = ????;
var
InMS : TMemoryStream;
cnt : Integer;
c : byte;
begin
InMS := TMemoryStream.Create;
result := TMemoryStream.Create;
try
InMS.LoadFromFile(FileName);
InMS.Position := 0;
for cnt := 0 to InMS.Size - 1 do
begin
InMS.Read(c, 1);
c := (c xor not (ord(EncryptKey shr cnt)));
result.Write(c, 1);
end;
finally
InMS.Free;
end;
end;
Проблема в том, что я не могу понять, как правильно читать и расшифровывать это на стороне Mac. Я пробовал различные подходы к использованию NSData без каких-либо успехов.
Любая помощь или предложения были бы весьма признательны.
Спасибо за пример. Я потрачу время, чтобы проработать его и вернуться к результатам, вопросам и т. Д. –
У меня наконец-то было время, чтобы сесть и заставить его работать. Вы код был большой помощью. Одна запись; побитовый оператор NOT ** ** не ** ** **. Код выглядит так: NSMutableData * fileData = [NSMutableData dataWithContentsOfFile: dataPath]; UInt16 currentCipher = ????; unsigned char * bytes = (unsigned char *) malloc ([длина файлаData]); [fileData getBytes: bytes]; for (int i = 0; i <[длина файла]; i ++) { байт [i]^= ~ (currentCipher >> i); } [fileData setData: [NSMutableData dataWithBytes: длина байтов: [длина файла]]]; Еще раз спасибо. –