2011-12-16 5 views
0

私は、以下の行を使って明示的にキーを定義できることを知っています。私が間違っていなければ、3desのキーの長さは24バイトでなければなりません。ファイルから指定されたバイト数のキーを生成する

Dim Newkey() As Byte = Convert.FromBase64String("24 bytes enter here") 

何か

Dim Newkey() As Byte = Convert.FromBase64String("c:\temp\mykey.pem") 

よう
  1. どのように私は、ファイルを3DES暗号化のために、データの24のバイトをバック与えていることを確認していますか?
  2. どうすればこのようなファイルを生成できますか?

答えて

1
  1. 単にキープロパティを取得、使用TripleDES.GenerateKey
  2. を復号化した後NewKey.Lengthを使用して、配列の長さを確認してください。これは、ファイル名にFromBase64Stringは動作しません使用して、テキスト形式のファイルを自分で読み/作成のチュートリアルをご覧くださいConverter.ToBase64String

を呼び出し、その後、トリプルDESと互換性がありますキーを生成します。

http://msdn.microsoft.com/en-us/library/system.security.cryptography.symmetricalgorithm.generatekey.aspx#Y0

16個のバイトキーはトリプルDESのために使用できることに留意されたい(ABAキー)、ならびに24バイト(ABC)キー。また、DESには弱いキーがあり、そのキーにはパリティビットが含まれています。ほとんどの実装では単純にパリティビットは無視されますが、正しく設定されているかどうかを確認するために、特別なキー生成関数を使用する方がよいでしょう。

-2
using System; 
using System.Text; 
using System.Security.Cryptography; 

namespace Crypto 
{ 
    public class KeyCreator 
    { 
     public static void Main(String[] args) 
     {   
      String[] commandLineArgs = System.Environment.GetCommandLineArgs(); 
      string decryptionKey = CreateKey(System.Convert.ToInt32(commandLineArgs[1])); 
      string validationKey = CreateKey(System.Convert.ToInt32(commandLineArgs[2])); 

      Console.WriteLine("<machineKey validationKey=\"{0}\" decryptionKey=\"{1}\" validation=\"SHA1\"/>", validationKey, decryptionKey); 
     } 

     static String CreateKey(int numBytes) 
     { 
      RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); 
      byte[] buff = new byte[numBytes]; 

      rng.GetBytes(buff); 
      return BytesToHexString(buff); 
     } 

     static String BytesToHexString(byte[] bytes) 
     { 
      StringBuilder hexString = new StringBuilder(64); 

      for (int counter = 0; counter < bytes.Length; counter++) 
      { 
       hexString.Append(String.Format("{0:X2}", bytes[counter])); 
      } 
      return hexString.ToString(); 
     } 
    } 
} 
+0

cerファイルを作成して、それによって返される生のバイトが24になるようにするにはどうすればよいですか? 3des暗号サービスプロバイダーの鍵として使用する。 TripleDESCryptoServiceProviderのようにcryptoProvider =新しいTripleDESCryptoServiceProvider(); X509Certificate2 cert =新しいX509Certificate2(@ "c:\ temp \ whatever.cer"); cryptoProvider.Key = cert.PublicKey.Key。 – Suresh

+1

Downvotedは部分的にのみ質問をカバーし、どこにも16進数を導入し、説明文やコメントなどは含みません。 –

関連する問題