我使用this程序集作爲json提取程序,它的所有工作都正常。我輸入的json文件現在只是普通的json。我想要做的是讀取加密內容的文件。使用U-SQL讀取帶有加密內容的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();
}
}
}
}
任何人都可以點我在正確的方向?謝謝!
感謝您的意見。全部內容不僅被解密,還被解密。是的,我試圖解密的基礎流,但迄今沒有成功。它無助於我無法真正調試它。至少我沒有找到如何。我可以將基本流轉換爲字符串(reader.ReadAsString())並解密,但不知道如何從那裏去 –
我想我可以創建單元測試示例項目,所以現在試試看,所以我可以看到什麼繼續:) –
您是否更新了VS工具?您現在可以對失敗的頂點進行本地調試。 –