# Methoden Reverse



## LippertD (5. Jan 2022)

Hallo Zusammen, vll kann mir hier einer helfen. Ich hab eine Methode welche mir einen String in ein Byte[] umwandelt.

Kleines Beispiel:


[CODE lang="java" title="Klasse"]public class Main {

    private static String LabelKey = "568NLH5HTTETTNEZ04QWJREQBY";

    public static void main(String[] args) {
      System.out.println("LabelKey in HEX: " + makeHexStringFromByteArray(makeByteArrayFromKey(LabelKey)));
    }

    private static byte[] makeByteArrayFromKey(String str) {
        char[] CharArray = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'W', 'X', 'Y', 'Z'};
        byte[] bArr = new byte[16];
        int length = str.length() - 1;
        int i = 15;
        int i2 = 0;
        int i3 = 0;
        while (length >= 0) {
            int i4 = 0;
            while (true) {
                char[] cArr = CharArray;
                if (i4 >= cArr.length) {
                    break;
                } else if (cArr[i4] == str.charAt(length)) {
                    i2 |= i4 << i3;
                    break;
                } else {
                    i4++;
                }
            }
            i3 += 5;
            length--;
            while (i3 > 8 && i >= 0) {
                bArr_ = (byte) i2;
                i2 >>= 8;
                i3 -= 8;
                i--;
            }
        }
        return bArr;
    }

    public static String makeHexStringFromByteArray(byte[] bArr) {
        StringBuilder sb = new StringBuilder();
        int length = bArr.length;

        for (int i = 0; i < length; i++) {
            sb.append(String.format("%02X", new Object[]{Byte.valueOf(bArr)}));
        }
        return sb.toString();
    }

}
[/CODE]

[CODE lang="java" title="Ergebnis"]LabelKey in HEX: A6456702C35A6EB556FC04BF2386DD7E[/CODE]


So nun zu meinem Problem, ich bräuchte eine Methode die das ganze umgekehrt macht

A6456702C35A6EB556FC04BF2386DD7E -> 568NLH5HTTETTNEZ04QWJREQBY

Evtl. hat hier ja jemand eine Idee? Ich glaube es ist aufgrund des |= Operators nicht möglich aber bin mir nicht sicher...

Bin für jede Hilfe dankbar _


----------



## temi (5. Jan 2022)

Da tränen einem ja die Augen.  Das ist ja ziemlich - schrecklich.

Was möchtest du genau mit dem Ausgangsstring machen? Vielleicht geht das ja einfacher.


----------



## LippertD (5. Jan 2022)

temi hat gesagt.:


> Da tränen einem ja die Augen.  Das ist ja ziemlich - schrecklich.
> 
> Was möchtest du genau mit dem Ausgangsstring machen? Vielleicht geht das ja einfacher.


Der Key kommt so verschlüsselt in einem QR-Code. Ich kann am Format bzw am Encoding leider nichts ändern. 🙈


----------



## Mart (5. Jan 2022)

```
public class sadf
{
public static void main(String[] args)
{
    System.out.println("bob".getBytes()[0]);
}
}
```


----------



## LippertD (5. Jan 2022)

Mart hat gesagt.:


> ```
> public class sadf
> {
> public static void main(String[] args)
> ...


Leider klappt das nicht, das Problem des Strings zurück in ein Byte[] ist nicht das Problem sondern ehr das Decoding des Byte[] mit dem obigen Shiffting und dem Zeichensatz.


----------



## Mart (5. Jan 2022)

```
Encodes this String into a sequence of bytes using theplatform's default charset, storing the result into a new byte array.
The behavior of this method when this string cannot be encoded inthe default charset is unspecified. The java.nio.charset.CharsetEncoder class should be used when more controlover the encoding process is required.
```


----------



## temi (5. Jan 2022)

LippertD hat gesagt.:


> Der Key kommt so verschlüsselt in einem QR-Code. Ich kann am Format bzw am Encoding leider nichts ändern. 🙈


Du hast den String "LabelKey" gegeben und damit möchtest du etwas machen. 

Was möchtest du damit machen? 

Ich glaube die wenigsten haben Lust sich durch den Code zu kämpfen, um herauszufinden, was da passiert.


----------



## LippertD (5. Jan 2022)

temi hat gesagt.:


> Du hast den String "LabelKey" gegeben und damit möchtest du etwas machen.
> 
> Was möchtest du damit machen?
> 
> Ich glaube die wenigsten haben Lust sich durch den Code zu kämpfen, um herauszufinden, was da passiert.


Das ist nur ein Beispiel wie es Encoded wird, gegeben ist im Live-Betrieb nur der „LabelKey in Hex“, daher ja meine Frage bezüglich des zurück kodierens.


----------

