2011-09-13 3 views
16

AES 256 암호화/암호 해독을 구현해야하며 제대로 작동하는 예제를 찾을 수 없었습니다.C# System.Security.Cryptography.Aes를 사용하는 AES256 암호화의 예

MSDN은 AES 클래스를 사용해야 함을 나타냅니다.

Rijndael 클래스는 Aes 알고리즘의 전신입니다. Rijndael 대신 Aes 알고리즘을 사용해야합니다. 자세한 내용은 .NET 보안 블로그의 The Differences Between Rijndael and AES 항목을 참조하십시오.

누구든지 AES256 용 AES 클래스를 사용하여 좋은 예를 들어 설명 할 수 있습니까?

내가 공유 키 암호화 된 텍스트 문자열을 포함하는 암호 파일이 :

조금 더 선명도를 추가합니다. 텍스트를 해독 한 다음 유효성을 검사해야합니다.

필자가 보았던 모든 예에서 암호화/암호 해독을 수행하는 데 최소한 두 개의 매개 변수가 필요합니다.

암호 파일의 텍스트에서 초기화 벡터와 키를 추론 할 수 있습니까?

내 암호 파일에서 개최 된 텍스트의 예입니다 ² † @ ƒ

EUA ± IRA, Ä, öDWnªóª ©© ¨|L

+4

모두 [AesManaged]에 대한 문서 (http://msdn.microsoft.com/en-us/library/system.security.cryptography.aesmanaged .aspx) 및 [AesCryptoServiceProvider] (http://msdn.microsoft.com/en-us/library/system.security.cryptography.aescryptoserviceprovider.aspx) 클래스는 정교한 예제를 제공합니다. 예제가 예상대로 작동하지 않으면 문제를 나타내는 짧지만 완전한 프로그램을 게시하십시오. – dtb

+0

@dtb 감사합니다. AesManaged에서 예제를 발견하지 못했습니다. Net4에서만 사용할 수 있으며 현재 3.5를 사용하고 있지만 예제는 간단합니다. – TeamWild

+0

데이터를 디코딩하려면 처음에 암호화 된 암호화 스트리밍 모드 (일반적으로 CBC 또는 ECB)를 알아야합니다. ECB에는 초기화 벡터가 없습니다. CBC가 사용되면 암호화 된 데이터의 처음 몇 바이트가 IV가 될 수 있습니다. 보유하고있는 모든 정보를 제공하고 유효한 유효 샘플 (kez 및 암호화 된 데이터)을 게시하십시오. 암호화 된 데이터는 바이너리이기 때문에 Base 64로 인코딩하거나 16 진수로 표시해야합니다. – Codo

답변

3

암호를 해독하는 데, 그것이 나의 클라이언트가 자신의 말에 암호화/복호화를 처리하는 방법에 관한 모든 정보를 (23)를 암호화하기 곧장 dtb가 제안한 AesManaged example을 사용합니다.

이 마침내 구현 코드는 다음과 같이 시작 :

try 
    { 
     // Create a new instance of the AesManaged class. This generates a new key and initialization vector (IV). 
     AesManaged myAes = new AesManaged(); 

     // Override the cipher mode, key and IV 
     myAes.Mode = CipherMode.ECB; 
     myAes.IV = new byte[16] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // CRB mode uses an empty IV 
     myAes.Key = CipherKey; // Byte array representing the key 
     myAes.Padding = PaddingMode.None; 

     // Create a encryption object to perform the stream transform. 
     ICryptoTransform encryptor = myAes.CreateEncryptor(); 

     // TODO: perform the encryption/decryption as required... 

    } 
    catch (Exception ex) 
    { 
     // TODO: Log the error 
     throw ex; 
    } 
+0

ECB 암호 모드는 사용하지 않는 것이 좋습니다. CBC 또는 다른 것을 사용하십시오.이유를 알아야 할 경우 위키피디아 문서 ( http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation)를 살펴보십시오. 또한 다음은 C#에서 AES로 암호화하는 방법의 좋은 예입니다. https://github.com/jbubriski/Encryptamajig –

+0

다른 데이터를 암호화 할 때마다 IV가 임의로 지정되어야합니다. 또한 코멘트에서 CRB 모드를 참조하고 있습니다 ... –

+1

@JohnBubriski - 암호화 된 파일을 제공 한 타사는 암호 모드 및 IV를 사용해야합니다. 나는 그것이 당신이 그것을해야하는 방법이 아니라는 것을 이해합니다. 그러나 "Fit in or F ** k off"의 경우였습니다. – TeamWild

8

어쩌면 이것은 예를 나열 here 당신을 도울 수있다. 내가 발견 더라면 저자의 성명 코드의

약 24 라인

관련 문제