Я работаю над расшифровкой данных потока WhatsApp с использованием шифрования AES-GCM на C#, но столкнулся с проблемой при попытке расшифровать данные потока. Ниже приведен мой класс Decryptor, который обрабатывает как расшифровку ключа AES, так и потоковые данные:
public class Decryptor
{
public static DecryptedRequest DecryptRequest(EncryptedRequest body, string privatePem, string passphrase)
{
Log.Information("Decrypting request with body: {Bodyinitial_vector}", body.initial_vector);
byte[] encryptedAesKey = Convert.FromBase64String(body?.encrypted_aes_key);
byte[] encryptedFlowData = Convert.FromBase64String(body?.encrypted_flow_data);
byte[] initialVector = Convert.FromBase64String(body?.initial_vector);
byte[] decryptedAesKey;
try
{
// Decrypt AES key using private key
using (var rsa = CreateRsaPrivateKey(privatePem, passphrase))
{
decryptedAesKey = rsa.Decrypt(encryptedAesKey, RSAEncryptionPadding.OaepSHA256);
Log.Information("Decrypted AES Key: {decryptedAesKey}", decryptedAesKey);
}
}
catch (Exception ex)
{
throw new FlowEndpointException(421, "Failed to decrypt the request. Please verify your private key.");
}
const int TAG_LENGTH = 16;
byte[] flowDataBuffer = encryptedFlowData;
byte[] initialVectorBuffer = initialVector;
byte[] encryptedFlowDataBody = flowDataBuffer[..^TAG_LENGTH];
byte[] encryptedFlowDataTag = flowDataBuffer[^TAG_LENGTH..];
byte[] decryptedData;
try
{
using (var aesGcm = new AesGcm(decryptedAesKey))
{
decryptedData = new byte[encryptedFlowDataBody.Length];
aesGcm.Decrypt(initialVectorBuffer, encryptedFlowDataBody, decryptedData, encryptedFlowDataTag);
}
}
catch (CryptographicException ex)
{
Log.Error("Decryption failed: {ErrorMessage}", ex.Message);
throw new FlowEndpointException(400, "Failed to decrypt the request.");
}
string decryptedJSONString = Encoding.UTF8.GetString(decryptedData);
return new DecryptedRequest
{
DecryptedBody = decryptedJSONString,
AesKeyBuffer = decryptedAesKey,
InitialVectorBuffer = initialVectorBuffer
};
}
}
Дешифрование завершается неудачно на следующем этапе:
using (var aesGcm = new AesGcm(decryptedAesKey))
{
decryptedData = new byte[encryptedFlowDataBody.Length];
aesGcm.Decrypt(initialVectorBuffer, encryptedFlowDataBody, decryptedData, encryptedFlowDataTag);
}
Я получаю сообщение об ошибке:
System.ArgumentException: указанный nonce не является допустимым размером для этого алгоритм. (Параметр nonce)
Эта ошибка предполагает, что начальный вектор (nonce) передается для расшифровки AES-GCM. имеет недопустимый размер. Однако я подтвердил, что начальный вектор правильно декодируется в формате Base64 и передается, как ожидалось.
Кто-нибудь сталкивался с подобной проблемой с AES-GCM< /code> расшифровка на C#? В чем может быть причина неправильного размера nonce и как это исправить?
Я пытался расшифровать это.
{
"encrypted_flow_data": "33oaKOMa2tsRCuh7g6JNsFzVB5icbm4dLq3sgrRXImxChcGOKWaTEZycsv/Tgg/jB/7cxQWH9D8HvJFkCc78X/avxOtEj0KbF+TuFKG28xO/HMR3A4rpzSyD37UAJy3eSmQ5CHZV7NOOMteJQNAOZQ3YEpcG/BcH8mo2iOQa2EA/8g==",
"encrypted_aes_key": "NQBgEO5GMMXVHsRx0oDb+0MeTYPnHDZM2yJBG0CeaJ2VqN9ennPnLKknbVgpfRm7GfGSxsPHvO9sZeNs/SXlmYIoasDXw3pgKVjhPq3BOk93Fkfjs8bwBhDP763RCgO5IsOSgCqvNeGxeXxyM2BLr8rUAwoE74FYRLa6dxg5RGEUpGJjKLU8VZmBDbXanhPmy6+iVcLEE79rZLsA0+kU7IZ44eeR7PpvqiDCcrnjME/uCF24+3g+iVjsgcL5lA5DdhUQnfPnkjLTiC+x/NPp7ev3e7nP+PzTLQOxnnihjggRfYHUzklp9laVLAQoSQh7vvyKJUPyCv9BRhEmR7BJVQ==",
"initial_vector": "Vs37z73b5OiBJ5hMV0kyUQ=="
}
и это то, что я, по крайней мере, ожидаю
Расшифрованный запрос:
Подробнее здесь: https://stackoverflow.com/questions/791 ... r-response
Невозможно расшифровать ответ сервера WhatsApp Flows ⇐ C#
Место общения программистов C#
-
Anonymous
1729507923
Anonymous
Я работаю над расшифровкой данных потока WhatsApp с использованием шифрования AES-GCM на C#, но столкнулся с проблемой при попытке расшифровать данные потока. Ниже приведен мой класс Decryptor, который обрабатывает как расшифровку ключа AES, так и потоковые данные:
public class Decryptor
{
public static DecryptedRequest DecryptRequest(EncryptedRequest body, string privatePem, string passphrase)
{
Log.Information("Decrypting request with body: {Bodyinitial_vector}", body.initial_vector);
byte[] encryptedAesKey = Convert.FromBase64String(body?.encrypted_aes_key);
byte[] encryptedFlowData = Convert.FromBase64String(body?.encrypted_flow_data);
byte[] initialVector = Convert.FromBase64String(body?.initial_vector);
byte[] decryptedAesKey;
try
{
// Decrypt AES key using private key
using (var rsa = CreateRsaPrivateKey(privatePem, passphrase))
{
decryptedAesKey = rsa.Decrypt(encryptedAesKey, RSAEncryptionPadding.OaepSHA256);
Log.Information("Decrypted AES Key: {decryptedAesKey}", decryptedAesKey);
}
}
catch (Exception ex)
{
throw new FlowEndpointException(421, "Failed to decrypt the request. Please verify your private key.");
}
const int TAG_LENGTH = 16;
byte[] flowDataBuffer = encryptedFlowData;
byte[] initialVectorBuffer = initialVector;
byte[] encryptedFlowDataBody = flowDataBuffer[..^TAG_LENGTH];
byte[] encryptedFlowDataTag = flowDataBuffer[^TAG_LENGTH..];
byte[] decryptedData;
try
{
using (var aesGcm = new AesGcm(decryptedAesKey))
{
decryptedData = new byte[encryptedFlowDataBody.Length];
aesGcm.Decrypt(initialVectorBuffer, encryptedFlowDataBody, decryptedData, encryptedFlowDataTag);
}
}
catch (CryptographicException ex)
{
Log.Error("Decryption failed: {ErrorMessage}", ex.Message);
throw new FlowEndpointException(400, "Failed to decrypt the request.");
}
string decryptedJSONString = Encoding.UTF8.GetString(decryptedData);
return new DecryptedRequest
{
DecryptedBody = decryptedJSONString,
AesKeyBuffer = decryptedAesKey,
InitialVectorBuffer = initialVectorBuffer
};
}
}
Дешифрование завершается неудачно на следующем этапе:
using (var aesGcm = new AesGcm(decryptedAesKey))
{
decryptedData = new byte[encryptedFlowDataBody.Length];
aesGcm.Decrypt(initialVectorBuffer, encryptedFlowDataBody, decryptedData, encryptedFlowDataTag);
}
Я получаю сообщение об ошибке:
System.ArgumentException: указанный nonce не является допустимым размером для этого алгоритм. (Параметр nonce)
Эта ошибка предполагает, что начальный вектор (nonce) передается для расшифровки AES-GCM. имеет недопустимый размер. Однако я подтвердил, что начальный вектор правильно декодируется в формате Base64 и передается, как ожидалось.
Кто-нибудь сталкивался с подобной проблемой с AES-GCM< /code> расшифровка на C#? В чем может быть причина неправильного размера nonce и как это исправить?
Я пытался расшифровать это.
{
"encrypted_flow_data": "33oaKOMa2tsRCuh7g6JNsFzVB5icbm4dLq3sgrRXImxChcGOKWaTEZycsv/Tgg/jB/7cxQWH9D8HvJFkCc78X/avxOtEj0KbF+TuFKG28xO/HMR3A4rpzSyD37UAJy3eSmQ5CHZV7NOOMteJQNAOZQ3YEpcG/BcH8mo2iOQa2EA/8g==",
"encrypted_aes_key": "NQBgEO5GMMXVHsRx0oDb+0MeTYPnHDZM2yJBG0CeaJ2VqN9ennPnLKknbVgpfRm7GfGSxsPHvO9sZeNs/SXlmYIoasDXw3pgKVjhPq3BOk93Fkfjs8bwBhDP763RCgO5IsOSgCqvNeGxeXxyM2BLr8rUAwoE74FYRLa6dxg5RGEUpGJjKLU8VZmBDbXanhPmy6+iVcLEE79rZLsA0+kU7IZ44eeR7PpvqiDCcrnjME/uCF24+3g+iVjsgcL5lA5DdhUQnfPnkjLTiC+x/NPp7ev3e7nP+PzTLQOxnnihjggRfYHUzklp9laVLAQoSQh7vvyKJUPyCv9BRhEmR7BJVQ==",
"initial_vector": "Vs37z73b5OiBJ5hMV0kyUQ=="
}
и это то, что я, по крайней мере, ожидаю
Расшифрованный запрос:
Подробнее здесь: [url]https://stackoverflow.com/questions/79109186/unable-to-decrypt-whatsapp-flows-server-response[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия