Мой сервер шифрует файлы с использованием pycrypto с AES в режиме CTR. Мой счетчик простой счетчик, как это:Расшифровать шифрованный текст, зашифрованный с помощью PyCrypto с использованием cryptopp
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03
Я хочу расшифровать зашифрованный текст С ++ библиотеки cryptopp в моих клиентов. Как мне это сделать?
код Python:
encryptor = AES.new(
CRYPTOGRAPHY_KEY,
AES.MODE_CTR,
counter=Counter.new(128),
)
cipher = encryptor.encrypt(plain_text)
C++ код до сих пор:
byte ctr[] = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01"
mDecryptor = new CryptoPP::CTR_Mode<CryptoPP::AES>::Decryption(key, 32, ctr);
std::string plain;
CryptoPP::StringSource(std::string(data, len), true, new CryptoPP::StreamTransformationFilter(*mDecryptor, new CryptoPP::StringSink(plain)));
, но после того, как работает этот plain
мусор.
Update:
Sample зашифрованные данные можно попытаться расшифровать с крипто ++, так что вы можете мне помочь, даже если вы не знаете, питона и вы просто опытный с крипто ++:
Try расшифровать эту base64 закодированный текст:
2t0lLuSBY7NkfK5I4kML0qjcZl3xHcEQBPbDo4TbvQaXuUT8W7lNbRCl8hfSGJA00wgUXhAjQApcuTCZckb9e6EVOwsa+eLY78jo2CqYWzhGez9zn0D2LMKNmZQi88WuTFVw9r1GSKIHstoDWvn54zISmr/1JgjC++mv2yRvatcvs8GhcsZVZT8dueaNK6tXLd1fQumhXCjpMyFjOlPWVTBPjlnsC5Uh98V/YiIa898SF4dwfjtDrG/fQZYmWUzJ8k2AslYLKGs=
с этим ключом:
12341234123412341234123412341234
с функцией счетчика, описанной в начале этого сообщения, используя crypto ++. Если вам удастся опубликовать расшифрованный текст (который содержит только цифры) и ваше решение, пожалуйста.
Update2: Я не предоставляю код IV в коде python, модуль python игнорирует IV. Я - это то, что вызывает проблему.
Я вижу, поэтому в CTR нет начального вектора или лучше сказано, что он заменен счетчиком/nonce в CTR. (Я предполагаю, что слэш здесь означает, что они оба в случае CTR), правильно? – Sassan
Если да, то я понятия не имею, почему код C++ не расшифровывает шифрованный текст. – Sassan
Также я прочитал статью в википедии, которую вы указали не менее 5 раз: «Если IV/nonce является случайным, то они могут быть объединены вместе с счетчиком, используя любую операцию без потерь (конкатенация, добавление или XOR) для создания фактического уникальный блок счетчика "он предполагает, что IV/nonce одинаково, и ДОПОЛНИТЕЛЬНО их можно комбинировать со счетчиком, поэтому я пришел к выводу, что библиотека C++ использует (комбинировать) IV/nonce, а библиотека python - нет. – Sassan