Samstag, 20. März 2010

asp.net codieren, EncodeTo64, ASCIIEncoding, Base64


Vor kurzem hatte ich die Notwendigkeit, die einfache Konvertierung von Zeichenfolgen hin und zurück von Base64-Codierung. Es erwies sich als relativ einfach in. Net, wenn man herausgefunden, welche Klassenbibliotheken Sie benötigt, um zu kombinieren.
Es stellt sich heraus der System.Convert hat zwei praktische Methoden für den Umgang mit Base64, ToBase64String und FromBase64String. Auf der ToBase64String, haben wir eine kleine Herausforderung, denn sie erwartet ein Byte-Array und kein String übergeben werden in.
Es ist ein gewisses Maß an Sinn machen, in der Regel sind Sie nicht einen einfachen String-Kodierung, sondern ein binäres Objekt wie beispielsweise eine Datei, die in der Regel als ein Array von Bytes dargestellt wird. Für uns bedeutet dies, wir müssen unsere String zu nehmen und die Umwandlung in ein Byte-Array.
Man sollte meinen, der String-Klasse wäre ein schönes statische Methode, dies zu erledigen haben, aber leider nicht. Stattdessen müssen wir auf System.Text machen. Ich denke die meisten von Ihnen arbeiten mit ASCII-Codierung, so dass wir hier auf der ASCIIEncoding.ASCIII Klasse aufzurufen, und verwenden Sie es GetBytes einen String in Bytes umwandeln kann.
Die kleine nachstehenden Methode kombiniert die beiden Methoden, die ich beschrieben, um eine Base64 codierten String erstellen von einem normalen String.
    static public string EncodeTo64 (string toEncode)
(
      byte [] toEncodeAsBytes
= System.Text. ASCIIEncoding. ASCII.GetBytes (toEncode);
      string returnValue
= System. Convert. ToBase64String (toEncodeAsBytes);
      return returnValue;
)

Hierbei sind zwei Dinge, ich zunächst ASCII-Kodierung, mit denen ich die meisten Leute abdecken sollte. Nur für den Fall jedoch hat System.Text Kodierungen für die verschiedenen Varianten von UTF sowie Unicode. Wählen Sie einfach die entsprechende Methode für Ihre Codierung benötigen.
Zweitens habe ich die Klasse statisch, weil ich mit ein Konsolenanwendung für meine Testumgebung. Während es sein könnte in der Klasse statisch, es gibt keinen Grund es zu sein hat. Ihrer Wahl.
OK, wir haben die Zeichenfolge kodiert haben, an einem gewissen Punkt sind wir gehen zu wollen, sie zu entschlüsseln. Wir haben im wesentlichen die Rückseite der Kodierung, rufen wir die FromBase64String und gehen in unserem kodierte Zeichenkette, die ein Byte-Array zurück. Wir rufen Sie dann die ASCIIEncoding GetString unsere Byte-Array in einen String umzuwandeln. Hier ist eine kleine Methode, um Ihre Base64-Strings decodieren.
    static public string DecodeFrom64 (string encodedData)
(
      byte [] encodedDataAsBytes
= System. Convert. FromBase64String (encodedData);
      string returnValue =
System.Text. ASCIIEncoding. ASCII.GetString (encodedDataAsBytes);
      return returnValue;
)

Schließlich ist hier eine einfache Testumgebung, in einer Konsolenanwendung gemacht, Ihnen zu zeigen, fordert die beiden Methoden.

      string myData = "Hier ist ein String zu kodieren.";

      string myDataEncoded = EncodeTo64 (myData);
      Console. WriteLine (myDataEncoded);

      string myDataUnencoded = DecodeFrom64 (myDataEncoded);
      Console. WriteLine (myDataUnencoded);

      Console. ReadLine ();

Seien Sie sich bewusst, ich habe hier keine Fehlerprüfung durchgeführt. Meine kleine Methoden gehen davon aus, dass die Daten, die Sie entschlüsseln wird es dann richtig zu und von einem String zu konvertieren. Wenn das nicht der Fall, könnten Sie am Ende mit einem schweren Fall von Kauderwelsch, wenn nicht eine Laufzeit Ausnahme verursachen. Wenn Sie sich nicht davon überzeugt, dass alles, was Sie tun haben, ist einfache Strings, dann uns bemühen, einige try / catch-Logik in der Implementierung umfassen.

Keine Kommentare:

Kommentar veröffentlichen

 
Nereides.Rss.Feeds | Delphi lernen, Delphi Kurs