Java 从十六进制格式获取原始secretkey

Java 从十六进制格式获取原始secretkey,java,encryption,encoding,aes,Java,Encryption,Encoding,Aes,这是用于AES加密的密钥的十六进制格式 00010203050607080A0B0C0D0F101112 我可以由此生成原始SecretKey格式或字节数组吗 如果是这样的话,怎么办?A是一个接口。实现是什么类型的?J2SE有两个实现类和,它们都有以字节数组作为参数的构造函数。原始SecretKey格式是什么? 您是否知道byte[]包含值从-128到127的带符号字节? 如果你试着这样做会不会痛: byte[] key = { 0x00,0x01,0x02,0x03,0x05,0x06,

这是用于AES加密的密钥的十六进制格式

00010203050607080A0B0C0D0F101112
我可以由此生成原始SecretKey格式或字节数组吗


如果是这样的话,怎么办?

A是一个接口。实现是什么类型的?J2SE有两个实现类和,它们都有以字节数组作为参数的构造函数。

原始SecretKey格式是什么?
您是否知道
byte[]
包含值从-128到127的带符号字节? 如果你试着这样做会不会痛:

byte[] key = {
  0x00,0x01,0x02,0x03,0x05,0x06,0x07,0x08,
  0x0A,0x0B,0x0C,0x0D,0x0F,0x10,0x11,0x12
};

注意:如果您有像0x80-0xFF这样的值,则需要将它们转换为(字节)0x80-(字节)0xFF以避免关于范围的警告。

您可以使用Apache Commons编解码器执行十六进制解码

如果您不想使用任何库,也可以这样做

byte[] bytes = new BigInteger("7F" + str, 16).toByteArray();
SecretKeySpec key = new SecretKeySpec(bytes, 1, bytes.length-1, "AES");

您必须添加额外的字节0x7F,以防止BigInteger删除前导零或添加有符号字节。

我希望您发布的是修改的十六进制值,或者您保护的数据不重要……是的,我只是发布一个测试数据十六进制键