我将此程序集用作 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();
}
}
}
}
谁能指出我正确的方向?谢谢!