簡體   English   中英

Python 字節串(?)到字節

[英]Python string of bytes(?) to bytes

重發這個問題。 我不是在詢問字符串文字中的“b”或如何擺脫它。

我有一個這樣的字符串:

"b'gAAAAABgAG4-D7Wda8gIQ6mLJNQegbfgKtnQ9nxcwJzokWGsiZMNYN2igbuUVcwMHxqZNQ-Yvd8tkTo-vWGEuOK7jgfKlGSq5A=='"

這最初是 python cryptography.fe.net encrypt() function 返回的字節值。

我需要將此值傳遞給接收字節值的decrypt() function。 如何將此字符串轉換回字節類型?

我已經在 stackoverflow 上閱讀了所有關於字符串到 base64 的類似解碼帖子,但它們沒有具體解決我的問題。

我嘗試了各種方法,例如string.encode("ascii")bytes(string, 'utf-8')但我最終得到的結果是這樣的:

b"b'gAAAAABgAG3XMnAaKN3H2y1bC-j08i8ONFwzG0SKeRyiM9dnfEo4ojegCxrY3DQB0Hf9kyM3fUId8ZZk_eQkX3GwAdboIMtk2A=='"

我也試過以下

import base64    
byt = base64.decodebytes("b'gAAAAABgAG4-D7Wda8gIQ6mLJNQegbfgKtnQ9nxcwJzokWGsiZMNYN2igbuUVcwMHxqZNQ-Yvd8tkTo-vWGEuOK7jgfKlGSq5A=='")

但我最終遇到了一個錯誤“TypeError:預期字節為 object,而不是 str”。

我有這個問題是因為我想加密 pandas 中的一列數據,然后將它與其他未加密的列一起寫入 Excel 文件。 當我稍后讀回它時,加密的列最終變成了一個字符串,當我解密這些值時,我得到了錯誤“TypeError: token must be bytes”。

“b'gAAAAABgAG4-D7Wda8gIQ6mLJNQegbfgKtnQ9nxcwJzokWGsiZMNYN2igbuUVcwMHxqZNQ-Yvd8tkTo-vWGEuOK7jgfKlGSq5A=='”

這最初是 python cryptography.fe.net encrypt() function 返回的一個字節值。

不,這是 fe.net encrypt()返回的字節串的repr()的表示。 解碼它會更加困難(盡管ast.literal_eval()會做到)。

您需要更改該加密代碼以將字節串解碼回常規文本字符串; 由於 Fe.net 令牌是 ASCII 安全的,您可以簡單地使用.decode()來做到這一點。

然后,當嘗試解密該值時,您將類似地對文本字符串進行.encode('ascii')以供 Fe.net 使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM