2011-10-13 2 views
0

키 입력 값 (키 = 값 & 키 = 값 ...) 및 키 (예 : D2335A9CA4924D9F914D2B47B450D436) AES 암호화를 사용하여 문자열을 암호화해야하지만 결과가 공급자의 문자열과 동일하지 않습니다. 결과. 결과 예 : AD0C66FB3C1204A8B0AC68AA9B9E3029C86DFF5872753F2F8D7B68EA667D8616215C20F831ABD5A4D56F286E471651AE5C15BCEB2F368200B4D9F3F6D2F0791E8F45D45FD은 .................... 내가 잘못 을하고있어 무엇? (googlized 코드)AES C# 인코딩. 유효한 결과를 얻을 수 없습니다.

public static string Encrypt(string toEncrypt) 
     { 
      byte[] keyArray = ASCIIEncoding.ASCII.GetBytes("D2335A9CA4924D9F914D2B47B450D436"); 
      byte[] toEncryptArray = ASCIIEncoding.ASCII.GetBytes(toEncrypt); 
      RijndaelManaged rDel = new RijndaelManaged(); 
      rDel.Key = keyArray; 
      rDel.KeySize = 128; 
      rDel.BlockSize = 256; 
      rDel.IV = keyArray; 
      rDel.Mode = CipherMode.CFB; 
      rDel.Padding = PaddingMode.PKCS7; 
      ICryptoTransform cTransform = rDel.CreateEncryptor(); 
      byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); 
      return FormatByteArray(resultArray); 
     } 

     internal static string FormatByteArray(byte[] b) 
     { 
      System.Text.StringBuilder sb1 = new System.Text.StringBuilder(); 
      int i = 0; 
      for (i = 0; i < b.Length; i++) 
      { 
       if (i != 0 && i % 16 == 0) 
        sb1.Append("\n"); 
       sb1.Append(System.String.Format("{0:X2} ", b[i])); 
      } 
      return sb1.ToString(); 
     } 

답변

3

내가 잘못하고 있어요?

byte[] keyArray = ASCIIEncoding.ASCII.GetBytes("D2335A9CA4924D9F914D2B47B450D436"); 

이 맞지 않을 수 있습니다. 그것은 64 바이트를 줄 것이고, 그 중 절반은 0x00입니다.

16 진수로 인코딩 된 것 같습니다. 디코딩 할 때 약간의 루프가 필요합니다.
그러면 16 바이트 (128 비트)가됩니다.


올드 대답은 :

당신이 문자열을 디코딩 할 필요가

, 그것은 아마 Base64로 인코딩됩니다.

byte[] keyArray = System.Convert.FromBase64String("D2335A9CA4924D9F914D2B47B450D436") 

을 그리고 당신은 유효한 (길이) 키가 있는지 확인 :보십시오.

+1

아마도 16 진수가 아닌 64 진수일까요? 그렇다면 http://stackoverflow.com/questions/311165/how-do-you-convert-byte-array-to-hexadecimal-string-and-vice-versa-in-c –

+1

@adrift, 예, I를 참조하십시오. 이미 편집 중이 었어. 그리고 그 링크도 도움이됩니다. –

+0

감사합니다. 나는 이것을했지만 어쨌든 결과는 정확하지 않습니다. 그리고이 코드를 빌드하면 새로운 결과를 가져옵니다. 일부 매개 변수는 동적이라고 생각합니다. – Ars

관련 문제