2017-11-25 2 views
0

이 암호화 코드가 있습니다. 암호화가 제대로 작동하지 않습니다.

from cryptography.fernet import Fernet 
key = Fernet.generate_key() 
f = Fernet(key) 
token = f.encrypt(b"something cool") 
k = f.decrypt(token) 
print(k) ` 

은 "B"가 갔어요해야, 출력은 웹 사이트의 예에 따르면

b'something cool' 

입니다. 나는 이것에 아주 새롭다 또는 해결책이 정확하게 작동하는 방법 알거나 이해하고 싶으면.

감사합니다.

+0

바이트 개체이기 때문에 나에게 맞습니다. –

+0

@JamesKPolk는 나를 위해 그렇게 보인다. 이것은 웹 사이트에서 본 예와 같습니다. 하지만 "b"는 여전히 내 암호 해독 텍스트에 있습니다. –

+0

@PatrickArtner thats my typing 실수 –

답변

1

'b'는 바이트를 의미합니다. 그래서 문자열 암호화 algorythms 실제로 바이트를 사용하여 작업하는 대신. 필자가 경험 한 것은 Fernet이하고있는 라이브러리 (str/bytes/array)를 돌려주는 것이다. 단순히 바이트를 문자열로 변환하기 만하면됩니다. k.decode(“utf-8”)

+0

나는 이것도 시험해 보았다. 여전히 동일 –

+0

죄송합니다.이 답변은 바이트를 변환하는 것이 맞습니다. https://stackoverflow.com/a/606199 – raykrow

+0

해답을 가져 주셔서 감사합니다. –

0

암호화 기능은 바이트 단위 및 바이트 단위로 수행해야합니다.

암호화 및 암호화는 문자열 또는 다른 인코딩이 아닌 바이트로 작동하며, decrypt은 바이트를 반환합니다. 실제 저수준 암호 해독은 인코딩을 모릅니다. 암호 해독이 문자열 일 수는 없으며 이미지 일 수 있습니다.

인코딩을 제공하는 데는 발신자가 결정합니다. 데이터는 암호화/해독됩니다.

발신자가 올바른 인코딩을 제공하는 작성한 함수로 암호화를 래핑하면이 경우 암호화 된 바이트 수를 나타내는 문자열과 암호 해독시 바이트를 반환합니다.