2016-10-09 5 views
0

私は暗号化コンソールアプリケーション(C#)で作業しており、暗号化プロセス中にVigenere Cipherのオプションを含めて、完全にランダムな文字(AZ)ではなく、暗号化するメッセージの長さ(文字数)と同じです。だから問題は、以前のユーザー入力(Stringbuilder s)と同じ長さのランダムな文字列を生成する方法です。これが明白な解決策であれば、事前にお詫び申し上げます。以下は、暗号化プロセスの結果を初期化して表示するためのコードです。私はワンタイムパッドのキーを生成する場所である「場合には」ユーザーは「GEN-OTP」を入力した場合、ネストされたが:変数から継承した長さのランダムな文字列を生成

//Encrypt 
if ((selection == 1) && (type == 1)) 
{ 
    Clear(); 
    WriteLine("\nPlease enter the message you wish to encrypt(please exclude spaces from the message):\n"); 
    StringBuilder s = new StringBuilder(ReadLine()); 
    WriteLine("\nPlease enter your key word or phrase:\n"); 
    string key = ReadLine(); 
    VigenereEncryptDecrypt.VigenereEncrypt(ref s, key); 
    if (ReadLine() == "gen-otp") 
    { 
    } 
    Clear(); 
    WriteLine("\nEncrypted message:\n{0}\n\nKey: {1}\n\nPlease press ENTER to continue:", s, key); 
    ReadLine(); 
    Clear(); 
    CipherSelection(); 
} 
+0

既存の変数「キー」をランダムに生成されたキーに変えようとするのではなく、 –

答えて

2

をそこで問題は、私は同じでランダムな文字列を生成します方法ですランダムな文字については、以前のユーザー入力の長さ(のStringBuilder秒)

私はランダムに生成されたKを保持する場合にネストの内側に別の変数を宣言する必要があります考えていますA-Z

Random rnd = new Random(); 
var otp = string.Concat(Enumerable.Range(0, s.Length) 
            .Select(i => (char)(rnd.Next(26) + 'A'))); 
+0

返信いただきありがとうございます。私はこれを試してみましょう。 –

+0

暗号化のためには、Cryptoランダムジェネレータを使用する必要があります。 –

+0

@Sylvester_Sneerまだ読んでいない場合は、http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

関連する問題