W jaki sposób można wczytać dane z pliku xml tak aby każdy znak zapisany w utf-8 przekonwertować na ANSI?
Każdy znak? IMHO to cały plik jest zapisany w określonym kodowaniu. I jaka w takim razie jest różnica między plikiem XML a innym?
Chodzi mi o to że jak mam test
string t1 = "prosty tekst"
to wykonuje najpier konwersje teksu do
byte[] dane = ASCIIEncoding.UTF8.GetBytes(t1);
nastepnie robie xor na każym bajcie tablicy dane
i po wykonaniu takiej peracji otrzymuje nowy string
string daneOut = ASCIIEncoding.UTF8.GetString(dane);
teraz zapisuje to do xml
<tekst> [daneOut] </tekst>
Czy bardzo proste szyfrowanie.
Niestety w drugą stronę to nie działa.
I nie za bardzo wiem czemu
Jak już masz zaszyfrowaną tablicę bajtów, to nie zamieniaj jej na "czystego" stringa, tylko zakoduj ją używając Base64:
byte[] zaszyfrowana = ...
string base64zaszyfrowanaStr = System.Convert.ToBase64String(zaszyfrowana);
A w drugą stronę:
byte[] base64zaszyfrowanaTab = System.Convert.FromBase64String(base64zaszyfrowanaStr);
-
Po pierwsze, to już na pierwszy rzut oka widać, że coś jest nie tak z tą drugą konwersją u Ciebie. Za pierwszym razem możesz sobie konwertować, ale jak już to zXORujesz, to jakim cudem chcesz to znowu przekonwertować, skoro to już nie jest tekst, tylko dane binarne?
-
Tak jak kolega Kuba zauważył, jak już sobie swojego striga zakodujesz do UTFa, pozniej zaszyfrujesz XORem (wtedy tekst jest dalej w UTF, ale zaszyfrowany już) i wtedy musisz użyć kodowania, które dane binarne zmieni Ci na tekst, czyli na przykład właśnie base64.
-
Reasumujac... SZYFROWANIE: tekst -> UTF -> XOR -> BASE64; DESZYFRACJA: unbase -> XOR;
-
Jak Ci nie bedzie działac to cos masz nie tak z tym XORowanie. Wrzuc wtedy fragment kodu odpowiedzialny za to(ale nie wrzucaj calosci) to sie zobaczy, co i jak...