Java SHA256WithECDSA Output Format
Java JCE는 ASN.1 DER 인코딩 포멧을 사용한다.
예를 들어 설명하면,
3044022059eb9bc695d7f7d64f9632c3ae684a022660049e8b05cd67f32a19d120abe68a02203bac6d491a57b7f70c33c2e31e0b02b7f55ee71310ce217ad54144e30df4b106
앞 0x30은 SEQUENCE tag.(실제는 SEQUENCE 0x10 + 0x20'constructed')
그 뒤는 body sequence의 길이.
0x02는 INTEGER이며 그뒤는 첫번째 integer의 길이.
그 길이만큼이 point 값이며
다시 0x02 나오는 부분이 INEGER이며 그 뒤는 point 값 길이.
위 예제에서 처음 0x02를 찾고,
3044022059eb9bc695d7f7d64f9632c3ae684a022660049e8b05cd67f32a19d120abe68a02203bac6d491a57b7f70c33c2e31e0b02b7f55ee71310ce217ad54144e30df4b106
signature에서 데이터를 뽑아야 할 필요가 있을때 유용하게 사용할듯~
출처: https://stackoverflow.com/questions/48530316/what-is-the-output-format-of-the-sha256withecdsa-signature-algorithm?rq=1
예를 들어 설명하면,
3044022059eb9bc695d7f7d64f9632c3ae684a022660049e8b05cd67f32a19d120abe68a02203bac6d491a57b7f70c33c2e31e0b02b7f55ee71310ce217ad54144e30df4b106
앞 0x30은 SEQUENCE tag.(실제는 SEQUENCE 0x10 + 0x20'constructed')
그 뒤는 body sequence의 길이.
0x02는 INTEGER이며 그뒤는 첫번째 integer의 길이.
그 길이만큼이 point 값이며
다시 0x02 나오는 부분이 INEGER이며 그 뒤는 point 값 길이.
위 예제에서 처음 0x02를 찾고,
3044022059eb9bc695d7f7d64f9632c3ae684a022660049e8b05cd67f32a19d120abe68a02203bac6d491a57b7f70c33c2e31e0b02b7f55ee71310ce217ad54144e30df4b106
그 뒤 0x20 = 32byte 데이터
3044022059eb9bc695d7f7d64f9632c3ae684a022660049e8b05cd67f32a19d120abe68a02203bac6d491a57b7f70c33c2e31e0b02b7f55ee71310ce217ad54144e30df4b106
그러므로 아래처럼 32byte 데이터 두개
3044022059eb9bc695d7f7d64f9632c3ae684a022660049e8b05cd67f32a19d120abe68a02203bac6d491a57b7f70c33c2e31e0b02b7f55ee71310ce217ad54144e30df4b106
signature에서 데이터를 뽑아야 할 필요가 있을때 유용하게 사용할듯~
출처: https://stackoverflow.com/questions/48530316/what-is-the-output-format-of-the-sha256withecdsa-signature-algorithm?rq=1
댓글
댓글 쓰기