このアセンブリをjsonエクストラクタとして使用していますが、すべて正常に機能しています。私の入力であるjsonファイルは、今では単なるjsonです。私がやろうとしているのは、暗号化されたコンテンツを含むファイルを読み取ることです。
したがって、エクストラクタでは、文字列を復号化する C# メソッドを使用したいのですが、文字列をどこにも取得していないため、これを機能させる方法がわかりません。抽出方法はこちら。
public override IEnumerable<IRow> Extract(IUnstructuredReader input, IUpdatableRow output)
{
// Json.Net
using (var reader = new JsonTextReader(new StreamReader(input.BaseStream)))
{
// Parse Json
// TODO: Json.Net fails with empty input files
var root = JToken.ReadFrom(reader);
// Rows
// All objects are represented as rows
foreach (JObject o in SelectChildren(root, this.rowpath))
{
// All fields are represented as columns
this.JObjectToRow(o, output);
yield return output.AsReadOnly();
}
}
}
そして、これが私の復号化方法です
public static class Decryptor
{
private static readonly byte[] _key = Convert.FromBase64String("AAECAwQFBgcICQoLDA0ODw==");
private static readonly byte[] _iv = Convert.FromBase64String("AAECAwQFBgcICQoLDA0ODw==");
private static readonly ICryptoTransform _decryptor;
static Decryptor()
{
var myRijndael = new RijndaelManaged { Key = _key, IV = _iv, Padding = PaddingMode.PKCS7 };
_decryptor = myRijndael.CreateDecryptor(myRijndael.Key, myRijndael.IV);
}
public static string Decrypt(string input)
{
// Create the streams used for decryption.
using (MemoryStream msDecrypt = new MemoryStream(Convert.FromBase64String(input)))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, _decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
}
誰かが私を正しい方向に向けることができますか? ありがとう!