【问题标题】:String conversion and encoding字符串转换和编码
【发布时间】:2021-10-07 13:31:54
【问题描述】:

我在数据库中有一个字符串,它是一个编码字符串。如何将其更改为字节数据类型,以便使用 python 不会出错。

数据库中的字符串 = 'b''yAe45XvJkMzMkhP_c6NDKe_OzJyxyJPidssdT4yOFSmT-S02iMXn8_RuC4EsPu9EiPE9KuXLUpR1CIsOnTrfKjmqjYz5rOG8Fplr6NUbFk2sdsdtrPDq_SpV7vg='''

Code : 
encMessage1 = df['data_value'][4] #calling string from MYSQL database
encMessage1 = encMessage1.encode()
cont = fernet.decrypt(encMessage1).decode()

字符串显示错误,输出显示不正确

错误: cryptography.fernet.InvalidToken

使用 encode() 后的错误字符串 - b"b'yAe45XvJkMzMkhP_c6NDKe_OzJyxyJPidssdT4yOFSmT-S02iMXn8_RuC4EsPu9EiPE9KuXLUpR1CIsOnTrfKjmqjYz5rOG8Fplr6NUbFk2sdsdtrPDq_SpV7vg='"

我该如何解决这个问题?另外,如何调用存储在字符串中的字节数据类型而不会出现任何错误?

【问题讨论】:

  • 所以存储在数据库中的字符串字面意思b"开头,以"结尾?
  • 看来你所拥有的是一个字节串的字符串表示。如果是这种情况,则将值插入数据库的过程有缺陷;它应该在插入之前解码字节串。
  • @pepoluan 我已加密字符串并将其转储到 MYSQL 表中,然后我使用解密方法调用它进行解密。但是,我无法将字符串转换为字节格式。我该如何解决?
  • @snakecharmerb 是的。我的用例如下:我在 MYSQL 表中有数据,为了安全起见,我想通过插入加密值并用这些加密值替换字符串来保护这些数据。我应该如何处理这个?我相信密钥必须是静态的,因为 MYSQL 表中的数据将使用此密钥进行解密。你能建议一些方法吗?
  • 这很难说,因为问题在于值是如何插入的,而问题中没有显示代码。

标签: python encoding python-cryptography


【解决方案1】:

根据您在 cmets 中对我的问题的回答,数据正在与 bytes repr 标记一起存储。

解决方案是砍掉字节标记:

enc_message1 = enc_message1[2:-1]

那么使用.encode()

【讨论】:

  • 解决方案是首先不将其与字节标记一起存储在数据库中。在某个地方有人在 bytes 对象上调用了 str()
  • @MarkTolonen 另外,我确实尝试了 hexidigest() 但我无法将其转换回所需的格式
  • @MarkTolonen,确定这是解决问题的根本原因。但是如果数据已经以这种方式存储,那么仍然可以通过简单的切片来解决这个问题。
猜你喜欢
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 2013-08-22
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多