2016-10-09 2 views
0

암호화 콘솔 응용 프로그램 (C#)을 작업하면서 암호화 과정에서 Vigenere Cipher에 대한 옵션을 포함시켜 임의 문자로 된 일회용 패드 키를 생성하려고합니다 (AZ)이지만 암호화 할 메시지의 길이 (문자)는 같습니다. 그래서 질문은 이전 사용자 입력 (Stringbuilder s)과 동일한 길이의 임의의 문자열을 어떻게 생성합니까? 이것이 명백한 해결책이라면 미리 사과드립니다. 다음은 암호화 프로세스의 결과를 초기화하고 표시하는 코드입니다. 나는 사용자가 입력 "세대-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

대신에 기존 변수 "key"를 무작위로 생성 된 키로 변환하려고합니까? –

답변

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 –

관련 문제