Category Archives: Programming

hexToByte – update

Benutzt man BouncyCastle als Security Provider in Java, kann man einfach diese Funktion verwenden.

org.bouncycastle.util.encoders.Hex.decode(hexStr)
DeliciousTwitterFacebookLinkedInRedditSlashdotTechnorati FavoritesDiggShare
Posted in Cryptography, Java, Programming | Leave a comment

hexToByte

Manchmal ist es schon erstaunlich wie lange man sich manchmal an den simpelsten Funktionen aufhalten kann. Aber “Konvertierungen” vom einen Datentyp in einen anderen sind mitunder schonmal trickreich.
Ich wollte einen String der Bytes als hexadezimalen Wert in der Form “abcde01″ repräsentiert in ein Byte-Array umwandeln. Zwei hexadezimale Ziffern stehen jeweils für ein Byte.
Umgesetzt habe ich das folgendermaßen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  private byte [] hexToByte(String hexStr)
  throws NumberFormatException {
    byte bArray[] = null;
    try {
      if (hexStr.length() < 2)
        throw new NumberFormatException(" Not long enough." +
            "At least two digits!");
      if (hexStr.length() % 2 != 0)
        throw new NumberFormatException(" Must be even.");
      // remove blanks
      hexStr.trim();
      int lengthOfKey = hexStr.length() / 2;
      bArray= new byte[lengthOfKey];
      for(int i=0; i &lt; lengthOfKey; i++) {
        int actValue = Integer.parseInt(hexStr.substring(2*i,2*i+2), 16); 
        bArray[i] = (byte) actValue;
      }  
    } catch (NumberFormatException e) {
      throw new NumberFormatException("Can't convert key hex value to byte " + 
          "array.\nReason: " + e.getMessage());
    }
    return bArray;
  }

Hintergrund ist folgender: Im KVA Praktikum sollten wir ein Programm schreiben, das für eine Eingabedatei und einen Schlüssel in oben beschriebener hexadezimaler Schreibweise einen MAC für die Datei berechnet.
Daher auch die verschiedenen Exceptions, die ausgelöst werden, wenn der String nicht mindestens zwei Zeichen hat und die Länge eine gerade Zahl ist.

DeliciousTwitterFacebookLinkedInRedditSlashdotTechnorati FavoritesDiggShare
Posted in Java, Programming | Leave a comment

Google Maps API

Um Kartenmaterial von Google Maps auf der eigenen Webseite zu integrieren stellt Google eine API zu Verfügung. Damit kann man allerlei nützliche Sachen machen. Wer sich dafür interessiert, sollte sich mal die Dokumentation zur API anschauen. Eine Schwierigkeit besteht allerdings darin das verschiedene Methoden der API geografische Koordinaten verlangen. So z.B. die Methode setCenter in diesem Beispiel:

map.setCenter(new GLatLng(37.4419, -122.1419), 13);

Der Methode wird ein Objekt GLatLng übergeben, welches die Koordinaten enthält. Die “13″ als zweiter Parameter steht für den Zoomfaktor der Karte. Die Angabe einer Adresse ist nicht möglich. Nur wer weiß schon welchen Breiten- und Längengrad eine bestimmte Adresse hat? Die Zuordnung einer Adresse zu einem Breiten- (Latitude) und Längengrad (Longitude) nennt man Geocoding und ist ausdrücklich nicht in der API enthalten.

Im Web gibt es zwar eine handvoll Seiten die genau dieses Geocoding übernehmen. Sie funktionieren jedoch außerhalb der USA entweder garnicht oder nur schlecht und man muss manuell Hand anlegen und das ist manchmal etwas mühsam. Viel einfacher ist es da einfach Google Maps selbst zu benutzen. Und das geht so:

  • Angenommen man möchte die geografischen Korrdinaten von Hölderlinstr. 3 Gebäudeteil E herausfinden. Man lädt Google Maps, gibt die Adresse ein und lässt suchen.
  • Jetzt einen Doppelklick auf das E Gebäude und die Karte wird darauf zentriert.
  • Rechts oben findet sich ein Link “Link zu dieser Seite”. Dieser Link enthält alle notwendigen Informationen. In diesem Beispiel sieht er so aus:
  • http://maps.google.de/maps?f=q&hl=de&q=H%C3%B6lderlinstr.+3,+Siegen&
    ll=50.905597,8.029654&spn=0.002453,0.006781&t=h&om=1
  • Hinter der Angabe ll= verbergen sich die geografischen Koordinaten.
    Breitengrad = 50.905597
    Längengrad = 8.029654
Vielleicht ist das ja nützlich für den ein oder anderen ;)
DeliciousTwitterFacebookLinkedInRedditSlashdotTechnorati FavoritesDiggShare
Posted in Programming, Web | 1 Comment