将字符串转换为字节

时间:2018-01-11 01:40:43

标签: python python-3.x shell

我有一个具有以下格式的文件:

username password (base64 encoded) id

我必须读取此密码(base64编码)并对其进行解码以作为密码中的参数传递以进行身份​​验证。 问题是,当我读取此密码时,它被作为字符串重新加载,当我尝试解码时出现错误,因为这可能是字节。

def getSecret(self):
    home = expanduser("~/.user/credentials")
    with open(home,"r") as file:
        self.password = list(file)[1]
        self.password = base64.b64decode(self.password)

        return self.password


conn = User()
decode = base64.b64decode(conn.getSecret())
print(decode)

但这是返回一个字符串,应该是字节,当我尝试解码时,我得到了这个错误

return binascii.a2b_base64(s)
binascii.Error: Incorrect padding

如何阅读和解码?

谢谢。

2 个答案:

答案 0 :(得分:1)

您要解码的是# NOTE: I removed your -Counters parameter, just add them back. # output file, temp file, and number of samples $outputFile = "c:\temp\output.csv" ; $tempFile = "$($outputFile).tmp" ; $maxSamples = 5; # export the CSV to tmp file Get-Counter -SampleInterval 5 -MaxSamples $maxSamples | Export-Counter -Path $tempFile -FileFormat CSV -Force ; # if your output file doesn't exist, copy the entire tmp file, including the CSV header if (!(Test-Path $outputFile)) { Get-Content $tempFile | Out-File -Encoding ASCII $outputFile ; # otherwise, just grab the last rows which contains the samples and append it to the existing output file } else { Get-Content $tempFile -Last $maxSamples | Out-File -Encoding ASCII -Append $outputFile ; }

string

>>> password_b64='c2VjcmV0\n' 功能会这样做(注意: binascii.a2b_base64):

a2b

但它返回一个>>> binascii.a2b_base64(password_b64) b'secret' 对象,而不是bytes对象。所以你必须以某种方式解码字节。显而易见的方法是假设它们是UTF-8, 并在生成的string上调用.decode(encoding)方法:

bytes

答案 1 :(得分:0)

我发现了问题,只需要删除b''从字符串和一切工作。 非常感谢大家。