읗읗
33
2021-09-16 16:21:46 작성 2021-09-16 16:32:23 수정됨
11
218

JSON AES128 암호화 시 일부 깨짐현상


{"ORDERLIST":[{"ORDER_NO":"1GG2109140500001","SERVICECODE":"5000","WH_CODE":"AS01","SHIPPER_NAME":"LOGIS","CNEE_NAME":"HONGGILDONG","CNEE_NAME_ENG":"HONGGILDONG","CNEE_TEL_NO":"010-1234-5678","CNEE_HP_NO":"010-1234-5678","CNEE_ADDRESS":"WEST 115TH STREET","CNEE_ADDRESSDT":"203","CNEE_ZIP_CODE":"1234","IMP_COUNTRY":"US","CUR":"USD","DELIVERY_MEMO":"","ITEMS":[{"PRODUCT_CODE":"CLHTAA001BKNEW","GOODS_NAME":"Basic Fit Ball Cap (Black)","GOODS_NAME_EN":"Basic Fit Ball Cap (Black)","ORIGIN":"KR","QTY":1,"UNIT_PRICE":30000}]}]}


암호화 후 복호화하면 {"ORDERLIST": 이 부분이 항상 깨져서 복호화가 됩니다..


JSON 파일이 문제라고 하기엔 올려논 JSON파일로 암복호화 사이트에서 테스트 시 정상적으로 출력됩니다


허나 JSON 암호화 한 그대로 암복호화사이트에서 복호화 시 마찬가지로 {"ORDERLIST": 이 부분이 깨지는걸로 봐선 암호화 시 문제가 되는것으로 판단됩니다


?i95?dc[ORDER_NO":"1GG2109140500001","SERVICECODE":"5000","WH_CODE":"AS01","SHIPPER_NAME":"LogisValleySLK","CNEE_NAME":"HONGGILDONG","CNEE_NAME_ENG":"HONGGILDONG","CNEE_TEL_NO":"010-1234-5678","CNEE_HP_NO":"010-1234-5678","CNEE_ADDRESS":"WEST 115TH STREET","CNEE_ADDRESSDT":"203","IMP_COUNTRY":"US","CUR":"USD","DELIVERY_MEMO":"","ITEMS":[{"PRODUCT_CODE":"CLHTAA001BKNEW","GOODS_NAME":"Basic Fit Ball Cap (Black)","GOODS_NAME_EN":"Basic Fit Ball Cap (Black)","ORIGIN":"KR","QTY":1,"UNIT_PRICE":30000}]}]}


암복호화 사이트에서 암/복호화하면 정상적으로 출력되는데 도저히 원인을 모르겠습니다.. 몇일째 붙들고 있다가 질문드립니다


답변해주시면 감사하겠습니다

0
  • 답변 11

  • 연습용더미1
    789
    2021-09-16 16:26:58

    BOM 문제가 아닐까 생각되네요...

  • 지붕뚫고높이차
    1k
    2021-09-16 17:28:25 작성 2021-09-16 17:30:08 수정됨

    운영모드,패딩 알려주세요.


    그리고 암호화 하기전 문자열의 첫 블럭 정보와

    암호화 복호화 후 문자열의 첫번째 블럭 정보도 헥사 형태로 표현해주시겠어요.

  • 읗읗
    33
    2021-09-16 17:36:12 작성 2021-09-16 17:38:08 수정됨

    연습용더미1  BOM 문제로 찾아서 대응했으나 마찬가지로 깨집니다..ㅠ

    지붕뚫고높이차 운영모드는 CBC이며, 패딩은 PKCS7입니다

    블럭정보는 어떻게 확인하는지 모르겠어요..

  • 지붕뚫고높이차
    1k
    2021-09-16 17:53:17 작성 2021-09-16 17:53:58 수정됨

    CBC 를 사용하고

    문자열 처음 부분에 문제가 있는걸 봐선

    캐릭터셋 문제인것 같습니다.


    AES 알고리즘에서

    블럭은 128 BIT 크기를 의미하는데


    암호화하기전 문자열이 컴퓨터에 저장되는 첫 128bit 와

    깨진 문자열 첫 128bit 를 그대로 비교해

    어느 부분부터 잘못되었는지 확인해 보시겠어요.


    헥사로 표현해도 좋고

    비트로 비교해도 괜찮습니다.

  • 읗읗
    33
    2021-09-16 18:15:09

    지붕뚫고높이차 


    확인되면 처리를 어떻게 해야할지 혹시 알려주실수 있을까요?ㅠㅠ

  • 지붕뚫고높이차
    1k
    2021-09-16 23:39:17 작성 2021-09-16 23:40:10 수정됨

    장문의 글을 쓰다가 이해를 못하실 것 같아 다시 적습니다.

    "확인 후 어떤 차이가 있는지 알려주시겠어요."

  • 읗읗
    33
    2021-09-17 08:54:56

    지붕뚫고높이차


    네 헥사를 처음 추출해봐서 이게 맞는지는 모르겠습니다.


    암호화 전 : 

    7B0D0A2020224F524445524C495354223A205B0D0A202020207B0D0A202020202020224F524445525F4E4F223A202231474732313039313430353030303031222C0D0A2020202020202253455256494345434F4445223A202235303030222C0D0A2020202020202257485F434F4445223A202241533031222C0D0A20202020202022534849505045525F4E414D45223A20224C6F67697356616C6C6579534C4B222C0D0A20202020202022434E45455F4E414D45223A2022484F4E4747494C444F4E47222C0D0A20202020202022434E45455F4E414D455F454E47223A2022484F4E4747494C444F4E47222C0D0A20202020202022434E45455F54454C5F4E4F223A20223031302D313233342D35363738222C0D0A20202020202022434E45455F48505F4E4F223A20223031302D313233342D35363738222C0D0A20202020202022434E45455F41444452455353223A20225745535420313135544820535452454554222C0D0A20202020202022434E45455F414444524553534454223A2022323033222C0D0A20202020202022494D505F434F554E545259223A20225553222C0D0A20202020202022435552223A2022555344222C0D0A2020202020202244454C49564552595F4D454D4F223A2022222C0D0A202020202020224954454D53223A205B0D0A20202020202020207B0D0A202020202020202020202250524F445543545F434F4445223A2022434C48544141303031424B4E4557222C0D0A2020202020202020202022474F4F44535F4E414D45223A20224261736963204669742042616C6C204361702028426C61636B29222C0D0A2020202020202020202022474F4F44535F4E414D455F454E223A20224261736963204669742042616C6C204361702028426C61636B29222C0D0A20202020202020202020224F524947494E223A20224B52222C0D0A2020202020202020202022515459223A20312C0D0A2020202020202020202022554E49545F5052494345223A2033303030300D0A20202020202020207D0D0A2020202020205D0D0A202020207D0D0A20205D0D0A7D


    암호화 후 :

    3930686173446B7042734E546E3267306B6B616D79457456694A6C5957615174337159313149794541416F4A52464867546D504B686E4668707144776E614F59777A4C4B70594F476E37656177417875547364614F736D6830752F4C317350776B6D68516838534B727970463846744E6179675358506A79464D77435947593533473744756641426244727A4C6A6C4373494F4B47703364734768506249336F386B35616F566669692F546556503046726365612F59536663507445326D7077465551676569716A4F426162796866643835745334694F76303574734B77704D703734357375666E647A6865682B78667550646672327552586F41456F41574A3965796F4938686D322B6B70637757353268344A693652785A44425079732B3067534C35664A3159354C6A6C527637386A65567A435549346D4E6D6B2F37627A6E73414E3748657755486A6278492B7637505565776C4E56742B7432595634597869765230746769332F454A555A70376251676B546369516C7645566F424F644A344E596D4A417663412B754F42724B6D59317A6934564A4B7177432B6C772B4A4E476D2F73334A30314F684D362F37584B346B4F45754C77463967763271684A57486178553142464A61704D46715069375A4A55723970314531674A46386F48306D46675A6236376678424D36316A67744E7176337A6959394554665A41624B70392F5A52546F756C574F5170577949542B6D4A3949302B706A71383549747456537434596D4B485652534E4367705A5669324B782B7267365333645A614D775275547A7A3173477871437144642F336359717A682B44665877396A4E46717A444E704334726647316D52644F564C64462B75717663704B784C4C4F5378707933527469643449665151427970433434557450725773652F3764676D4243734E785678452F4C474F6D787A4766506B684359663059346141364D3272485762636A785154736258724332626B3831636D756F784D6B6771707A6F4339725A6978576F2F6D7743745457486D6A656E543051546637377331747947355169352F30546A38626A3539767842563167616A783162624946344F55537A4D4E33586A6E73706E3961376E42564654346B443263794A373050564A70724E776C363731444139744469467062593645536C5153757A534441697874706C54786C637451354F5577526A76546649694A487A6A63542F396A6947314274686C695048763838446D71337632685343436671522F564F4A47776E78697A77726D376F6F6A7A734846415068307448743941643732353149715530504B4165424D4E784563685338694A53427357486D596C5A7278717A4A6B72586A7130546444624C4333363548347A2F34656E6C41756943536A6434355949326D5A72772F776F557A7938


  • 지붕뚫고높이차
    1k
    2021-09-17 09:31:21 작성 2021-09-17 09:31:55 수정됨

    암호화 후 다시 복호화 한 헥사값도 올려주세요.

    ------------------------------------------------------------------------------------------------


    어떤 언어를 사용하건 암호화 처리 흐름은 동일합니다.


     "사람이 볼수 있는 문자열"

    ->  연속된 비트정보 변환 (지정한 캐릭터셋을 사용해 변환)

    -> 블록 단위로 분리

    -> 각각의 블록을 암호화, 운영모드적용, 패딩 적용

    -> 암호화된 연속된 블럭을 하나로 이어 연속된 비트열로 저장

    -> 문자로 변환 ( 헥사 또는 BASE64 인코딩 규칙 적용)

    -> "사람이 볼수 있는 암호화된 문자열" 

    * 복호화는 역방향


    암호화 된 데이터가 복호화 되었을 때 깨진다는건

    암호화를 위해 나열한 순서가 올바르게 구현되지 못했다는 겁니다.


    정상적으로 진행되었다는 암호회 기능과

    깨진다는 암호화 기능의 차이를 비교하기 위해선

    위에 나열한 순서의 입력과 출력값을 서로 비교해서 차이가 있는 곳을 확인하시면 됩니다.


  • 읗읗
    33
    2021-09-17 11:10:32

    지붕뚫고높이차


    복호화 한 핵사값입니다.


    복호화 전 :

    3930686173446B7042734E546E3267306B6B616D79457456694A6C5957615174337159313149794541416F4A52464867546D504B686E4668707144776E614F59777A4C4B70594F476E37656177417875547364614F736D6830752F4C317350776B6D68516838534B727970463846744E6179675358506A79464D77435947593533473744756641426244727A4C6A6C4373494F4B47703364734768506249336F386B35616F566669692F546556503046726365612F59536663507445326D7077465551676569716A4F426162796866643835745334694F76303574734B77704D703734357375666E647A6865682B78667550646672327552586F41456F41574A3965796F4938686D322B6B70637757353268344A693652785A44425079732B3067534C35664A3159354C6A6C527637386A65567A435549346D4E6D6B2F37627A6E73414E3748657755486A6278492B7637505565776C4E56742B7432595634597869765230746769332F454A555A70376251676B546369516C7645566F424F644A344E596D4A417663412B754F42724B6D59317A6934564A4B7177432B6C772B4A4E476D2F73334A30314F684D362F37584B346B4F45754C77463967763271684A57486178553142464A61704D46715069375A4A55723970314531674A46386F48306D46675A6236376678424D36316A67744E7176337A6959394554665A41624B70392F5A52546F756C574F5170577949542B6D4A3949302B706A71383549747456537434596D4B485652534E4367705A5669324B782B7267365333645A614D775275547A7A3173477871437144642F336359717A682B44665877396A4E46717A444E704334726647316D52644F564C64462B75717663704B784C4C4F5378707933527469643449665151427970433434557450725773652F3764676D4243734E785678452F4C474F6D787A4766506B684359663059346141364D3272485762636A785154736258724332626B3831636D756F784D6B6771707A6F4339725A6978576F2F6D7743745457486D6A656E543051546637377331747947355169352F30546A38626A3539767842563167616A783162624946344F55537A4D4E33586A6E73706E3961376E42564654346B443263794A373050564A70724E776C363731444139744469467062593645536C5153757A534441697874706C54786C637451354F5577526A76546649694A487A6A63542F396A6947314274686C695048763838446D71337632685343436671522F564F4A47776E78697A77726D376F6F6A7A734846415068307448743941643732353149715530504B4165424D4E784563685338694A53427357486D596C5A7278717A4A6B72586A7130546444624C4333363548347A2F34656E6C41756943536A6434355949326D5A72772F776F557A7938


    복호화 후 :


    3F103F3F3F3F3F3F3F47213F3F423A205B0D0A202020207B0D0A202020202020224F524445525F4E4F223A202231474732313039313430353030303031222C0D0A2020202020202253455256494345434F4445223A202235303030222C0D0A2020202020202257485F434F4445223A202241533031222C0D0A20202020202022534849505045525F4E414D45223A20224C6F67697356616C6C6579534C4B222C0D0A20202020202022434E45455F4E414D45223A2022484F4E4747494C444F4E47222C0D0A20202020202022434E45455F4E414D455F454E47223A2022484F4E4747494C444F4E47222C0D0A20202020202022434E45455F54454C5F4E4F223A20223031302D313233342D35363738222C0D0A20202020202022434E45455F48505F4E4F223A20223031302D313233342D35363738222C0D0A20202020202022434E45455F41444452455353223A20225745535420313135544820535452454554222C0D0A20202020202022434E45455F414444524553534454223A2022323033222C0D0A20202020202022494D505F434F554E545259223A20225553222C0D0A20202020202022435552223A2022555344222C0D0A2020202020202244454C49564552595F4D454D4F223A2022222C0D0A202020202020224954454D53223A205B0D0A20202020202020207B0D0A202020202020202020202250524F445543545F434F4445223A2022434C48544141303031424B4E4557222C0D0A2020202020202020202022474F4F44535F4E414D45223A20224261736963204669742042616C6C204361702028426C61636B29222C0D0A2020202020202020202022474F4F44535F4E414D455F454E223A20224261736963204669742042616C6C204361702028426C61636B29222C0D0A20202020202020202020224F524947494E223A20224B52222C0D0A2020202020202020202022515459223A20312C0D0A2020202020202020202022554E49545F5052494345223A2033303030300D0A20202020202020207D0D0A2020202020205D0D0A202020207D0D0A20205D0D0A7D

  • 지붕뚫고높이차
    1k
    2021-09-17 13:33:04 작성 2021-09-17 13:39:06 수정됨

    암호화 하기 전 데이터와
    암호화 후 다시 복호화 한 데이터 앞 부분을 비교해보면 차이가 있네요.

    7B0D0A2020224F524445524C49535422 3A205....

    3F103F3F3F3F3F3F3F47213F3F42 3A205....


    16byte (16개 문자, 헥사로 32개 문자) 단위 기준으로 틀린 건 아니기 때문에


    블럭 단위 암호화 문제도 아니고

    운영모드 문제도 아닙니다.


    그리고 이상하게도 복호화한 데이터가 반복 되고 있는데


    일단 사용하시는 암호화 라이브러리 문제인 것 같고

    다른 암호화 알고리즘 선택해 사용해보세요.


    마지막으로 암호화 후 헥사로 찍어주신건

    BASE64 인코딩을 거처 만든 값을 다시 헥사로 변환한 데이터 입니다.


    다시 이야기 하지만 제가 나열한 처리 흐름 그대로 bit 로 찍어 비교하세요.  

  • 읗읗
    33
    2021-09-17 13:39:23
  • 로그인을 하시면 답변을 등록할 수 있습니다.