Стандарт логического приложения inline C# Действие не удается расшифровать AES CBC с PKCS7 (приложение работает в функциC#

Место общения программистов C#
Ответить
Anonymous
 Стандарт логического приложения inline C# Действие не удается расшифровать AES CBC с PKCS7 (приложение работает в функци

Сообщение Anonymous »

Я пытаюсь расшифровать зашифрованные данные AES внутри стандартного приложения логического приложения, но код, который отлично работает в функциональном приложении, не работает внутри логических приложений. < /p>
Problem
< /code>

Ключ AES хранится в штуке Azure Key в виде базового 64-кодированного строки
(32 байта → AES-256). < /p>
< /li>
. Зашифрованная полезная нагрузка. < /p>
< /li>
Тот же клавиша + комбинация цифрового текста успешно расширяет в функциональном приложении. < /p>
< /li>
в стандарте логического приложения, действие inline c# с помощью этой ошибки: < /p>
< /br /li?InvokeFunctionFailed
The function 'CSharp_wf-infringement-process-transaction_execute_csharp_script_code.csx'
failed with the error 'Exception binding parameter 'context'' when executing.
Please verify function code is valid.
< /code>
inline c# код в стандартном приложении логического приложения < /p>
// Add the required libraries
#r "Newtonsoft.Json"
#r "Microsoft.Azure.Workflows.Scripting"

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Azure.Workflows.Scripting;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

public static async Task Run(WorkflowContext context, ILogger log)
{
var composeOutput = (await context.GetActionResults("Compose").ConfigureAwait(false)).Outputs;

string KeyStringStr = composeOutput["KeyString"].ToString();
string Base64DataStr = composeOutput["Base64Data"].ToString();

if (string.IsNullOrEmpty(KeyStringStr))
throw new ArgumentException("AES key is missing.");
if (string.IsNullOrEmpty(Base64DataStr))
throw new ArgumentException("Ciphertext is missing.");

byte[] key = Convert.FromBase64String(KeyStringStr);
byte[] allBytes = Convert.FromBase64String(Base64DataStr);

byte[] iv = allBytes.Take(16).ToArray();
byte[] cipherBytes = allBytes.Skip(16).ToArray();

string decryptedText;
using (var aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;

using var ms = new MemoryStream();
using (var cryptoStream = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Write))
{
cryptoStream.Write(cipherBytes, 0, cipherBytes.Length);
cryptoStream.FlushFinalBlock();
}
decryptedText = Encoding.UTF8.GetString(ms.ToArray());
}

return new { DecryptedText = decryptedText };
}

public class Results
{
public string DecryptedText { get; set; }
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... h-pkcs7-wo
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»