Python八进制转义字符串

Python八进制转义字符串,python,Python,我正在做一个web应用程序登录自动化。web应用程序的前缀和后缀为带有密码的几个八进制转义字符,在客户端对密码进行md5哈希并发送到服务器 所以,当我使用Java脚本对字符串进行Md5加密时,我得到以下结果 webapp使用JS库进行客户端MD5转换hexMD5()属于该库 但是当我尝试使用python做同样的事情时,我得到了不同的结果 import hashlib def getMd5(string): m = hashlib.md5() m.update(string)

我正在做一个web应用程序登录自动化。web应用程序的前缀和后缀为带有密码的几个八进制转义字符,在客户端对密码进行md5哈希并发送到服务器

所以,当我使用Java脚本对字符串进行Md5加密时,我得到以下结果

webapp使用JS库进行客户端MD5转换hexMD5()属于该库

但是当我尝试使用python做同样的事情时,我得到了不同的结果

import hashlib
def getMd5(string):
    m = hashlib.md5()
    m.update(string)
    return m.hexdigest()
prefix = "\051"
suffix  = "\341\303\026\153\155\271\161\166\030\054\324\011\046\035\344\274"

prefix = unicode(prefix,'unicode-escape')
suffix = unicode(suffix,'unicode-escape')
salted = prefix+"HELLO"+suffix
print getMd5(salted.encode('utf8'))
结果

c7862e873e9bc54a93aec58c199cda37
谁能解释一下我做错了什么

import hashlib
def getMd5(string):
    m = hashlib.md5()
    m.update(string)
    return m.hexdigest()
prefix = "\051"
suffix  ="\341\303\026\153\155\271\161\166\030\054\324\011\046\035\344\274"


salted = prefix+"HELLO"+suffix
print getMd5(salted)

37a0c199850b36090b439c3ac152fd70
不使用unicode会产生与Javascript相同的输出

如果我正确理解你的评论:

len(r"\051" == 4 # use raw string r
len("\051") == 1 

你有没有试过看一下myStr包含的内容?如果我打印它,我会收到垃圾,因为大多数八进制转义字符都是不可打印的。明白问题了,在上面的脚本中,len(prefix)是1,因为我们是以这种方式定义的,但在case中,因为我正在解析HTML页面以提取前缀和后缀。所以len(prefix)在我的例子中返回4(\,0,5和1)。你能告诉我如何处理吗?谢谢。这是我想要的。但是我如何才能将“原始字符串”转换为非转义正常字符串(r“\051”->“\051”)。我尝试了mystr.encode('string-escape'),但它不起作用。