Merhabalar suan üzerinde calistigim projede C# ile bir Çipkartı AES ile şifreliyorum ve bunu ATxmega128A4U Controller ında C ile tekrar çözümlemem gerekiyor.

Bilgiyi şifreleyen kısım
public static byte[] encrypt(string input)
        {
            byte[] encrypted;
            using (RijndaelManaged myRijndael  = new RijndaelManaged())
            {
                myRijndael.KeySize = 128;   // 16 byte
                myRijndael.BlockSize = 128; // 16 byte
                myRijndael.Mode = CipherMode.CBC;
                myRijndael.Key = new byte[16] { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36 }; //key;
                myRijndael.IV = new byte[16] { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88 };
                ICryptoTransform encryptor = myRijndael.CreateEncryptor(myRijndael.Key, myRijndael.IV);
                using(MemoryStream ms_encrypt  =  new MemoryStream())
                {
                    using (CryptoStream cs = new CryptoStream(ms_encrypt, encryptor, CryptoStreamMode.Write))
                    {
                        
                        using (StreamWriter sw = new StreamWriter(cs))
                        {
                            sw.Write(input);
                        }
                        encrypted = ms_encrypt.ToArray();
                    }
                }
                
            }

            return encrypted;
        }
Buda Controller da sözde kodu çözümleyecek olan kısım

#include "AES_driver.h"

#define BLOCK_LENGTH 16
#define BLOCK_COUNT 2
uint8_t  lastsubkey[BLOCK_LENGTH];
/* Key used when AES encryption is done operations. */
uint8_t key[BLOCK_LENGTH]	= {0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36};
uint8_t init[BLOCK_LENGTH]	= {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88};

/* Variable used to check if decrypted answer is equal original data. */
bool success;


	success = false;

	/* Before using the AES it is recommended to do an AES software reset to put
	 * the module in known state, in case other parts of your code has accessed
	 * the AES module. */
	AES_software_reset();
	uint8_t hebele[32];
	success = AES_lastsubkey_generate(key, lastsubkey);
	if(!success)
	{	
		lcd_gotoxy_8(0,3);
		lcd_putc('X');
		return;
	}
	/* Do AES Cipher Block Chaining encryption and decryption on three blocks. */
	uint8_t lenni[32] = {0x4c,0x65,0x6e,0x6e,0x69,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
	//success = AES_CBC_encrypt(lenni, hebele, key,init,2);
	success = AES_CBC_decrypt(card.content.data.client_name, hebele, lastsubkey,init,2);
	/* Check if decrypted answer is equal to plaintext. */
	if(success)
	{	for(uint8_t i = 0; i < BLOCK_LENGTH * BLOCK_COUNT ; i++ ){
			lcd_gotoxy_8(0+i,2);
			if(i>=16)
				lcd_gotoxy_8(0+i-16,3);
				lcd_putc(hebele[i]);
		}
	}
	return;
daha önce benzer bir konu üzerinde çalışmış bilgi sabihi arkadaşlar bir göz gezdirirlerse sevinirim.
Dün bütün günümü (8 saat )bu sıkıntıyı araştırarak ve çözmeye çalışarak geçirdim.


düzenleme :
Sorun çözüldü. Sorunun kaynağı başka bir dosyada yaptığım bir ascii karakter kontrollü. Değeri 32 den düşük ve yazısal değeri olan değişkenlerde; her tekil değerin 32 den büyük olması gerekiyor (32 ASCII de boşluktur ve 32 den küçük sayılar ekranda manasız şekiller oluşturur) bu sebeple sifreledigim yazi manipule edilmis oluyordu