16 진 형식에서 오리지널 비밀을 얻습니다
-
05-07-2019 - |
문제
이것은 AES 암호화에 사용되는 비밀 키의 16 진 형식입니다.
00010203050607080A0B0C0D0F101112
이것으로부터 원래 Secretkey 형식 또는 바이트 배열을 생성 할 수 있습니까?
그렇다면 어떻게?
해결책
Apache Commons Codec을 사용하여 Hex Decoding을 수행 할 수 있습니다.
http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/hex.html#decodehex (char [])
라이브러리를 사용하고 싶지 않다면이를 수행 할 수도 있습니다.
byte[] bytes = new BigInteger("7F" + str, 16).toByteArray();
SecretKeySpec key = new SecretKeySpec(bytes, 1, bytes.length-1, "AES");
Biginteger가 선행 0을 벗기거나 서명 된 바이트를 추가하지 못하도록 여분의 바이트 0x7f를 추가해야합니다.
다른 팁
ㅏ SecretKey
인터페이스입니다. 구현은 어떤 유형입니까? J2SE에는 두 개의 구현 클래스가 있습니다. KerberosKey
그리고 SecretKeySpec
, 둘 다 바이트 배열을 매개 변수로 갖는 생성자를 갖는다.
원래 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로 캐스트해야합니다.
제휴하지 않습니다 StackOverflow