Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ubuntu
- AI 경진대회
- 우분투
- 파이썬
- 프로그래머스
- Kaggle
- Docker
- Git
- 백준
- Real or Not? NLP with Disaster Tweets
- 코로나19
- SW Expert Academy
- gs25
- PYTHON
- 편스토랑 우승상품
- github
- Baekjoon
- 캐치카페
- dacon
- hackerrank
- 편스토랑
- 더현대서울 맛집
- ChatGPT
- 맥북
- 데이콘
- 금융문자분석경진대회
- leetcode
- programmers
- 프로그래머스 파이썬
- 자연어처리
Archives
- Today
- Total
솜씨좋은장씨
[Python] ValueError: Input strings must be a multiple of 16 in length 원인과 해결방안 본문
Programming/Python
[Python] ValueError: Input strings must be a multiple of 16 in length 원인과 해결방안
솜씨좋은장씨 2020. 4. 7. 10:56728x90
반응형
파이썬을 여행하는 히치하이커를 위한 안내서에 나온 PyCrpyto 코드를 실습하다가
다음의 오류를 만나게 되었습니다.
실습 코드
from Crypto.Cipher import AES
encryption_suite = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
chiper_text = encryption_suite.encrypt("aaaaaaaaaaaaaaaaa")
decryption_suite = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
plain_text = decryption_suite.decrypt(chiper_text)
Error
... 생략
ValueError: Input strings must be a multiple of 16 in length
원인
원인은 입력되는 문자열의 길이가 16의 배수를 만족하지 못하기 때문입니다.
입력되는 문자열의 길이가 16배수여야 하는 이유는
AES의 CBC방식은 암호화할 대상인 평문을 16바이트씩 끊어 사용하기 때문입니다.
만약 a가 16번 반복되는
"AAAAAAAAAAAAAAAA"
이 문자열을 넣었을때는 오류가 나지 않지만
a가 15번 혹은 17번 반복되는 문자열을 넣었을때는 해당 오류가 발생하게 됩니다.
해결방안
입력하는 문자열의 길이가 16의 배수인지 확인해보고 그렇지 않다면 길이가 16의 배수가 되도록
수정을 해주면됩니다.
참고 링크
'Programming > Python' 카테고리의 다른 글
[Python] Pycharm에 원격 인터프리터 추가하고 적용하기! (11) | 2020.04.08 |
---|---|
[Python] Python과 cryptography를 통해 대칭키 암호화 하기! (4) | 2020.04.07 |
[Python] Python에서 Sqlite3 사용하기 (feat. Pandas) (6) | 2020.04.06 |
[Python] Python3에서 venv로 가상환경 만들고 사용하기! (0) | 2020.04.06 |
[Python] Pycharm에서 디버깅하기! (0) | 2020.04.04 |
Comments