2012-04-20 6 views
2

で暗号化されているかを決定します。私は、暗号化されたファイルと暗号化されていないファイルの両方にアクセスします。私は鍵にもアクセスします。私は、開発者が暗号化を行うことで働いているので、私はほとんどすべてにアクセスできるようになります:)は、プログラムのビデオファイルを.TS *場合、私は.TSビデオファイルはAES 128暗号化を使用して暗号化されているかどうかを判断するための簡単な自動テストを書きたいAES 128

私はファイルサイズが異なっているかどうかをチェックするよりも、より高度なテストを行うことを好むだろう。

私は書くことができるいくつかの簡単なテストコードの任意の考えですか?私はC#またはpowershellでコードを書いています。

私はこのようなもので、絶対に経験がないので、子供のように私を扱うこと自由に感じ。

ありがとうございました

答えて

1

私は結局c#コマンドラインを作成しました。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication2 
{ 
    using System.IO; 
    using System.Security.Cryptography; 

    class Program 
    { 
     static void Main(string[] args) 
     { 

      if (args.Length == 0) 
      { 
       Console.WriteLine("<key> <iv> <encryptedfile> <outputdecryptedfile>"); 
       Environment.Exit(-1); 
      } 

      //Console.ReadLine(); 
      byte[] encryptionKey = StringToByteArray(args[0]); 
      byte[] encryptionIV = StringToByteArray(args[1]); 

      try 
      { 
       using (FileStream outputFileStream = new FileStream(args[3], FileMode.CreateNew)) 
       { 
        using (FileStream inputFileStream = new FileStream(args[2], FileMode.Open)) 
        { 
         using (var aes = new AesManaged { Key = encryptionKey, IV = encryptionIV, Mode = CipherMode.CBC }) 
         using (var encryptor = aes.CreateDecryptor()) 
         using (var cryptoStream = new CryptoStream(inputFileStream, encryptor, CryptoStreamMode.Read)) 
         { 
          cryptoStream.CopyTo(outputFileStream); 
         } 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.ToString()); 
      }    
     } 

     public static byte[] StringToByteArray(string hex) 
     { 
      return Enumerable.Range(0, hex.Length) 
          .Where(x => x % 2 == 0) 
          .Select(x => Convert.ToByte(hex.Substring(x, 2), 16)) 
          .ToArray(); 
     } 

    } 
} 
1

これは本当の理由は何ですか?したがって、ファイルを2回暗号化したり、2回復号化したりすることはありませんか?おそらく、要件を知っていれば、より良い解決策があるでしょう。

はしかし、私がこれまで見たものに基づいて、あなたがファイルを復号化しようとする必要がありますように思えるし、それが失敗した場合、それは暗号化されていないと仮定...しかし、これは非常に時間がかかる可能性があります。私は読んでファイルを開く以外の方法があるかどうか分からない、行を読んで平文があるかどうかを調べる。

暗号化/復号化が正常に動作しているかどうかをテストしようとしている場合は、既知の平文の入力ファイルを取り出し、正しい鍵で暗号化してから2回復号化します無効なキーで結果を3つの方法で比較する。

+0

著作権のある動画会社のメディアに所属しています。暗号化が行われたことを確認するためにテストする必要があります。これは、間違ったキーで解読しようとすると興味深い考えです。次に、別の結果が得られるかどうかを確認するために正しいキーを入力してください:) – user952342

+0

powershellでキーを使用してファイルを解読する簡単なコマンドはありますか? – user952342

+0

@ user952342単純なコマンドではありませんが、それは/ too/badではありません。 「powershell cryptography aes」を検索し、いくつかのサンプルを見つけることができます。このページの最後にあるMSDN - http://msdn.microsoft.com/en-us/library/system.security.cryptography.aes.aes aspx - powershellサンプルがあります - AESも使用しています。 –

1

TSコンテナが、おそらく、ファイルではなく、それが暗号化されたかいないかどうかを把握しようとしているのに有効なMPEG-TSファイルがあるかどうかを確認するために、より効率的である、完全に暗号化されている場合。無効な場合は、暗号化されていると想定します。ファイルの最初の数バイトを読み取って、フォーマットを検証することができます。フォーマット(または「マジックナンバー」)は、ここに文書化されています。このことができます

http://en.wikipedia.org/wiki/MPEG_transport_stream#Packet

希望。

関連する問題