背故事,這裏是一個有點冗長,但基本上我想帶像b'\x04\x0e\x1d'
一個字符串,將它轉換回至ByteArray。Python的3.x中 - 轉換爲bytearray的字符串表示回字符串
我工作的一個基本實現一次性墊,在這裏我把明文A
和共享密鑰B
以產生密文C
accoring方程A⊕B=C
。然後我用方程C⊕B=A
來逆轉這個過程。
我已經找到了很多的python3功能編碼字符串作爲字節,然後異或字節,如下列:
def xor_strings(xs, ys):
return "".join(chr(ord(x)^ord(y)) for x, y in zip(xs, ys)).encode()
到xor_strings()
調用然後返回一個字節組:
print(xor_strings("foo", "bar"))
但是當我將它打印到屏幕上時,我所顯示的實際上是一個字符串。所以我假設蟒蛇只是呼籲ByteArray的一些str()
功能,我得到的東西看起來像下面這樣:
b'\x04\x0e\x1d'
這裏存在的問題。我想從該字符串創建一個新的bytearray。通常我會在字節數組中調用decode()
。但是如果我輸入'b'\ x04 \ x0e \ x1d'作爲輸入,python將它視爲一個字符串,而不是一個字節數組!
我怎麼能採取像b'\x04\x0e\x1d'
作爲用戶輸入一個字符串,將它轉換回至ByteArray?
您不能將調用「join」的結果存儲到變量中嗎? xor_strings已經返回一個字節數組。 –
我有點困惑。 'b'\ x04 \ x0e \ x1d''不是一個字符串,它是一個字節數組。或者你想讓用戶在文本框中輸入「b'\ x04 \ x0e \ x1d'」? – Tomalak
@EnricoBorba問題在於,在對我的消息進行加密後,我想將其打印到屏幕上,以便將其複製併發送給朋友。然後,他們應該能夠接受該字符串,將其粘貼爲輸入,並且程序應該能夠將該字符串再次識別爲字節數組,而不是字符串 – CryptoCat