/// <summary>DecodeRedirect</summary> /// <param name="queryString">string</param> /// <returns>デコードされたsaml</returns> public static string DecodeRedirect(string queryString) { // EcodeRedirectの逆 // -------------------------------------------------- // Saml → URLデコード → Base64デコード // → DEFLATE解凍 → XML宣言のエンコーディング → XML // -------------------------------------------------- // Samlの抽出 string saml = ""; if (queryString.IndexOf("SAMLRequest") != -1) { saml = StringExtractor.GetParameterFromQueryString("SAMLRequest", queryString); } else if (queryString.IndexOf("SAMLResponse") != -1) { saml = StringExtractor.GetParameterFromQueryString("SAMLResponse", queryString); } else { return(""); } byte[] tempByte = DeflateCompression.Decompress( CustomEncode.FromBase64String(CustomEncode.UrlDecode(saml))); //// XML宣言部分を取得するために、us_asciiでデコード //string tempString = CustomEncode.ByteToString(tempByte, CustomEncode.us_ascii); //// エンコーディング オブジェクトの取得 //Encoding enc = XmlLib.GetEncodingFromXmlDeclaration(tempString); return(CustomEncode.ByteToString(tempByte, CustomEncode.us_ascii)); // enc.CodePage); }
/// <summary>MemoryStream</summary> private static void MemoryStream() { // DeflateCompression byte[] input = CustomEncode.StringToByte(TestDeflateCompression.hoge, CustomEncode.UTF_8); byte[] compressed = DeflateCompression.Compress(input); byte[] decompressed = DeflateCompression.Decompress(compressed); if (TestDeflateCompression.hoge == CustomEncode.ByteToString(decompressed, CustomEncode.UTF_8)) { MyDebug.OutputDebugAndConsole("DeflateCompression(MemoryStream)", "is working properly."); } else { MyDebug.OutputDebugAndConsole("DeflateCompression(MemoryStream)", "is not working properly."); } }
internal static string Unarchive(string text) { var data = Convert.FromBase64String(text); byte[] unarchivedData = null; var dataWithEncryptionInfo = DataWithArchivingInfo.FromProcessedData(data); var mode = dataWithEncryptionInfo.Mode; switch (mode) { case StorageModes.CompressAndEncrypt: unarchivedData = DeflateCompression.Decompress(AesEncryption.Decrypt(dataWithEncryptionInfo.Data)); break; case StorageModes.Compress: unarchivedData = DeflateCompression.Decompress(dataWithEncryptionInfo.Data); break; case StorageModes.Store: unarchivedData = dataWithEncryptionInfo.Data; break; } return(Encoding.UTF8.GetString(unarchivedData)); }
/// <summary>FileStream</summary> private static void FileStream() { StreamWriter sr = null; string inFilePath = ""; string outFilePath = ""; string resultFilePath = ""; #region outFilePathを明示しないパターン // inFilePathの作成 inFilePath = Path.GetTempFileName(); sr = File.CreateText(inFilePath); sr.WriteLine(TestDeflateCompression.hoge); sr.Close(); // 圧縮(outFilePath outFilePath = DeflateCompression.Compress(inFilePath); // 解凍(resultFilePath resultFilePath = DeflateCompression.Decompress(outFilePath); // ファイルの比較 if (ResourceLoader.LoadAsString(inFilePath, Encoding.UTF8) == ResourceLoader.LoadAsString(resultFilePath, Encoding.UTF8)) { MyDebug.OutputDebugAndConsole("DeflateCompression(FileStream)-1", "is working properly."); } else { MyDebug.OutputDebugAndConsole("DeflateCompression(FileStream)-1", "is not working properly."); } // ファイルの削除 File.Delete(inFilePath); File.Delete(outFilePath); File.Delete(resultFilePath); #endregion #region outFilePathを明示するパターン // inFilePathの作成 inFilePath = Path.GetTempFileName(); sr = File.CreateText(inFilePath); sr.WriteLine(TestDeflateCompression.hoge); sr.Close(); // 圧縮(outFilePath outFilePath = Path.GetTempFileName(); outFilePath = outFilePath.Remove(outFilePath.Length - 4); // 拡張し無し outFilePath = DeflateCompression.Compress(inFilePath, "zz", outFilePath); // 解凍(resultFilePath resultFilePath = Path.GetTempFileName(); resultFilePath = resultFilePath.Remove(outFilePath.Length - 4) + ".dcmp"; // 拡張し有り resultFilePath = DeflateCompression.Decompress(outFilePath, "", resultFilePath); // ファイルの比較 if (ResourceLoader.LoadAsString(inFilePath, Encoding.UTF8) == ResourceLoader.LoadAsString(resultFilePath, Encoding.UTF8)) { MyDebug.OutputDebugAndConsole("DeflateCompression(FileStream)-2", "is working properly."); } else { MyDebug.OutputDebugAndConsole("DeflateCompression(FileStream)-2", "is not working properly."); } // ファイルの削除 File.Delete(inFilePath); File.Delete(outFilePath); File.Delete(resultFilePath); #endregion }