Java AES存储字符串到byteArray

时间:2015-10-24 01:07:45

标签: java encoding bytearray

我尝试加密十六进制的消息,并要求将其存储到byteArray中。当我对字节数组进行硬编码时,我得到了它的工作,但是当作为字符串传递时我无法使它工作。 硬编码的byteArray看起来像

byte secretKeyBytes[] = new byte[] {(byte) 0x80, (byte)0x00, (byte)0x00,(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01};

所以我希望用户传递一个字符串,如" 0x80 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01"

我想知道如何将此字符串保存为如上所述的byte []数组。 我曾尝试使用.getBytes方法,但这对字符串不起作用 它可以解析一下吗?

我尝试使用Convert a string representation of a hex dump to a byte array using Java?上发布的方法 由@pfranza

        public static  byte[] fromHexString(String s) {
        String v[] = s.split(" "); 
        System.out.println(v.length);
        byte arr [] = new byte[v.length];
        int i = 0;
        for(String val: v) {

            arr[i++] =  Integer.decode("0x" + val).byteValue();
        }
        return arr;

我添加了一个print语句来查看数组的大小,并打印出16这是正确的。但我认为它不是在字节数组中正确存储值。 当我输入0x80 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01

我得到java.lang.NumberFormatException:对于输入字符串:" 0x80"

0 个答案:

没有答案