최근 새롭게 만들고 있는 프로젝트에서 암호화와 관련된 작업을 하는 와중에 Exception has occurred: TypeError argument should be integer or bytes-like object, not 'str'
라는 예외를 만날 수 있었다.
간단하게 해결할 수 있는 에러이다.
파이썬에서 bytes와 str은 아래와 같은 관계가 성립한다.
str -> 디코딩 -> bytes
bytes -> 인코딩 -> str
그러므로 encode를 해주던, decode를 해주던 utf-8로 해주면 된다는 소리다.
나 같은 경우는 RSA 키로 만든 public key와 private key가 결과물이 bytes 로 나왔는데 그걸 슬라이싱하려다가 발생한 오류였다.
아래 코드를 보면 알겠지만 export_key() 에 이어서 decode 를 해주고 있다. 즉 지금은 해결된 상태이다. 하지만 이전 코드에서는 decode 를 쓰지 않았고 제목과 같은 에러를 만났다.
from Crypto.PublicKey import RSA
key = RSA.generate(2048)
private_key = key.export_key().decode('utf-8')
public_key = key.publickey().export_key().decode('utf-8')
print(private_key)
print()
print(public_key)
반응형
'Python3 > Python3 lang' 카테고리의 다른 글
[Python3] python3의 itertools.groupby 사용 (0) | 2022.10.20 |
---|---|
[Python3] is와 == 의 차이 (0) | 2022.07.18 |
[Pythone] Python3 Memory Error 발생 - 파이썬 메모리 에러 발생 (0) | 2022.04.02 |
[Python3] 코딩테스트 파이썬 사용시 유일한 단점 - 파이썬의 객체 복사 방식(깊은 복사와 얕은 복사) (0) | 2022.03.19 |
[Python3] 파이썬 @cache @lru_cache 데코레이터 (0) | 2022.03.13 |