0
def get_encrypt_param(params):
_salt = b"\xA9\x9B\xC8\x32\x56\x35\xE3\x03"
_iterations = 2
data = []
for i in params:
data.append("{}={}".format(i, params[i]))
str_param = "&".join(data)
print(str_param)
padding = 8 - len(str_param) % 8
str_param += chr(padding) * padding
print(str_param)
hasher = MD5.new()
hasher.update(apikey.encode())
hasher.update(_salt)
result = hasher.digest()
for i in range(1, _iterations):
hasher = MD5.new()
hasher.update(result)
result = hasher.digest()
encoder = DES.new(result[:8], DES.MODE_CBC, result[8:16])
encrypted = encoder.encrypt(str_param)
encryptParam = base64.b64encode(encrypted)
return res
I 입력 한자,에 ValueError : 입력 스트링의 길이는 8의 배수 여야 때 파이썬 입력 UTF-8 3.6
params = {
"name": u"张三",
"idCard": "123456199001011233",
"mobile": "13800138000"
}
print(get_encrypt_param(params))
ValueError를 언제 : 입력 문자열이 8의 배수이어야한다 길이. 하지만 영어 문자를 입력해도 괜찮습니다. 도와주세요. 내가하려고 :
for i in params:
data.append("{}={}".format(i, params[i].encode("utf-8")))
그러나 str_param은 다음과 같습니다
mobile=b'13800138000'&name=b'\xe5\xbc\xa0\xe4\xb8\x89'&cardno=b'123456199001011233'
그것의 바이트와 다른 사람들이 해독 PARAMS을 인식 할 수 없습니다.