Cryptotext in Unicode van Byte Array lijkt ongeldige tekens te bevatten

My encryption application (written in C# & GTK# and using Rijndeal) takes a string from a textview to encrypt, and returns the result in a Byte array. I then use Encoding.Unicode.GetString() to convert it to a string, but my output doesn't look right, it seems to contain invalid characters: `zźr[� ��ā�֖�Z�_���� W��h�.

Ik neem aan dat de codering voor de tekstweergave geen Unicode is, maar ASCII werkt ook niet. Hoe kan ik ervoor zorgen dat de uitvoer niet ongeldig is? Of is mijn benadering verkeerd om mee te beginnen?

Ik ben nieuw bij C# en heb niet veel ervaring met programmeren in het algemeen (ik heb een behoorlijke vaardigheid in PHP en ken een beetje JavaScript, maar dat is het wel) dus als je je antwoorden op lief zou kunnen schatten, zou dat zeer gewaardeerd worden.

Bij voorbaat dank voor het nemen van de tijd om mij te helpen.

2
Niet echt, dat? wordt ingevoegd door de coderingsmethode om tekens te vertegenwoordigen die het - uh - niet kan weergeven in ASCII. ASCII is 7 bits uit een byte en de uitvoer van codering is meestal alle 8 bits uit een byte (of, voor wie het historische verschil begrijpt, uit een octet).
toegevoegd de auteur Maarten Bodewes, de bron
Trouwens, de uitvoer wanneer ik de bytearray naar ASCII converteer is: ?????? 3q ?? '????? e1? D ??? G? ^ U ^ BH
toegevoegd de auteur Razick, de bron
Ik ben me hiervan bewust, ik wil er alleen op wijzen dat de uitvoer niet goed door ASCII kan worden gerepresenteerd. Bedankt voor de reactie.
toegevoegd de auteur Razick, de bron

1 antwoord

While every string can be represented as a sequence of bytes using UTF-16, not every sequence of bytes represents a UTF-16 encoded string. Especially if the sequence of bytes is the result of an encryption process.

U kunt de methode Convert.ToBase64String gebruiken om de volgorde van bytes naar een Base64 -reeks.

4
toegevoegd
Bedankt! Dat heeft de truc compleet gedaan!
toegevoegd de auteur Razick, de bron