Я пытаюсь восстановить файл, зашифрованный старой чистой реализацией Python Blowfish.
старый код опирался на один файл blofish.py (Copyright (C) 2002 Michael Gilfix)
Старые данные шифруются, выполняя следующие операции:
cipher = Blowfish(self.masterKey)
cipher.initCTR()
cleanData = cipher.decryptCTR(encData)
Этот код не инициализирует одноразовый номер, который требуется в современной реализации blowfish, поэтому я не смог перенести его на функцию pycryptodome
cipher = Blowfish.new(self.masterKey, Blowfish.MODE_CTR, nonce = ?????)
cleanData = cipher.decrypt(encData)
Единственное предложение, которое я могу найти, находится внутри функции initCTR, где iv имеет значение 0 (даже если в режиме CTR нет IV)
def initCTR(self, iv=0):
"""Initializes CTR mode of the cypher"""
assert struct.calcsize("Q") == self.blocksize()
self.ctr_iv = iv
self._calcCTRBUF()
def _calcCTRBUF(self):
"""Calculates one block of CTR keystream"""
self.ctr_cks = self.encrypt(struct.pack("Q", self.ctr_iv)) # keystream block
self.ctr_iv += 1
self.ctr_pos = 0
Может кто-нибудь мне помочь?