BitConverter.ToString (hash) .Replace ("-", string.Empty) Эквивалентен в питоне? - PullRequest
0 голосов
/ 05 декабря 2018

Как мне написать следующую строку в python?

BitConverter.ToString(hash).Replace("-", string.Empty)

Вот что я пытаюсь:

import random
import uuid
import base64
from Crypto.Cipher import AES
import hashlib
from Crypto import Random
import binascii

key = hashlib.sha256(b'SOmeKEyy').digest()
key1 = base64.b64encode(key)
iv_value = b'RandomValuie'
iv = base64.b64decode(iv_value)

cipher = AES.new(key, AES.MODE_CFB, iv)

message = Mac_AddressBytes + ip_address_Bytes + DeviceIdBytes
msg = iv + cipher.encrypt(message)

s =encrypt(message, key)
print(s)

sa = bytearray(s)
DeviceIdentity1 = binascii.b2a_hex(s)
DeviceIdentityDecoded = "0x" + DeviceIdentity1.decode('utf-8')
print (str(DeviceIdentityDecoded))

Mac_AddressBytes + ip_address_Bytes + DeviceIdBytes - допустимая строка.

Выходные данные, которые я получаю здесь, имеют шестнадцатеричный формат, который я хочу, но если я запускаю ту же строку в C #, я получаю другую строку, то часть, которой мне не хватает в python, - это BitConverter.ToString(hash).Replace("-", string.Empty).

Я пытался сделать следующее:

DeviceIdentity2 = "0x" + DeviceIdentity1.decode('utf-8').replace("-", "")

, но он возвращает мне то же значение, что и:

DeviceIdentityDecoded = "0x" + DeviceIdentity1.decode('utf-8')

КогдаЯ расшифровываю строку, получаю следующее:

Îí5ó/½û.qõX9D&Ç:eXM»Bñj2µ\ëÁ§ÓËÔ¤ý  ¼t®@Z9)Àåñr¹ Ör¾hÅåéÙ|¶nÙZÆÃï,¡WÀj©r{ÆR¥f,|^W¯C
Ù1¾+MöB;S­ô«¹næk0ú·7e,atMìÆ¿Kfí

Есть ли в python эквивалент кода C # выше?

1 Ответ

0 голосов
/ 06 декабря 2018

Для всех, кто заинтересовался, я обнаружил, что мне не хватает PKCS7Encoder ()

Это обновленный ответ, который работает

key = base64.b64decode("SOmeKEyy")
    iv_value = 'RandomValue'
    iv = base64.b64decode(iv_value)
    encoder = PKCS7Encoder()
    padded_text = encoder.encode(secret_text)
    padded_text1 = padded_text.encode()
    print(padded_text1)
    e = AES.new(key, AES.MODE_CBC, iv)
    cipher_text = e.encrypt(padded_text1)
    Finally = binascii.b2a_hex(cipher_text)
    DeviceIdentity = "0x" + Finally.decode('utf-8').replace("-", "")
    print(DeviceIdentity)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...