/images/jg_02.jpg

AES vue > django 적용

AES_vue > django

CryptoJS(vue) 에서 pycryptodomex(django)로 암호화 복호화 하는 과정을 정리

✨기본 사항

  1. 각기 다른 시스템의 라이브러리를 사용.
  2. AES의 CBC 모드를 기본으로 가정.
  3. CBC모드를 사용하기 위해서 필수 인자 3가지
    1. secret_key: 암호화 & 복호화를 위한 메인 키 (대칭키)
    2. iv: 암호화 & 복호화를 위한 서브 키
    3. data: 암호화를 하고 싶은 데이터
  4. vue에서 object를 통째로 암호화 하여 django로 전달하는 상황을 가정.
  5. 💡중요
    • CryptoJS
      • secret_key와 iv는 정해진 bytes 길이(long)를 지켜야 한다. ex) 16bytes, 32bytes 등. 사용자가 길이를 맞추어 사용하기 어렵다면, padding을 사용해 맞춘다.
      • data는 길이가 상관없다. CryptoJS는 자동으로 padding하여 bytes길이를 맞추어주기 때문에!
      • 다만 암호화를 하려면 string type의 데이터를 넣어야 한다.
    • pycryptodomex
      • secret_key와 iv, data는 정해진 bytes 길이(long)를 지켜야 한다. ex) 16bytes, 32bytes 등
      • 이는 이번 포스팅에서는 신경쓸 부분이 아니지만, 나중에 django에서 암호화하여 vue로 보낼때 중요한 사항이다. pycryptodomex는 자동으로 data를 padding해주지 않기 때문에!

AES django 적용

AES django 적용

django에 PyCryptodomex를 설치하여 적용

1
pip install pycryptodomex
  • 주의 사항

    1. PyCryptodome is a fork of PyCrypto

    2. For more information, see the homepage.를 클릭하면, pycryptodome의 문서로 이동하는데, 왜 그런건지 모르겠다. 아마 의존성?이 있어 그런건가 싶다.