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