정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노 gps 데이터 aes 암호화
겨울곰이야 | 2018-05-03

 

1. 프로젝트 사용한 보드 종류

  메가2560

 

 

2. 사용한 개발 프로그램명

아두이노 스케치

 

 

3. 사용한 센서 모델명

  neo-06

 

 

4. 연결한 회로 설명 (또는 이미지)

vcc-5v, gnd-gnd rx-17 tx-18 

 

5. 소스코드 (주석 필수)

  #include <AES.h>

#include "./printf.h"

 

AES aes ;

 

unsigned int keyLength [3] = {128, 192, 256}; // key length: 128b, 192b or 256b

 

byte *key = (unsigned char*)"01234567890123456789012345678901"; // encryption key

byte plain[] = "http://www.arduinolab.net/aes-encryptiondecryption-using-arduino-uno/"; // plaintext to encrypt 평문

 

unsigned long long int myIv = 36753562; // CBC initialization vector; real iv = iv x2 ex: 01234567 = 0123456701234567

 

void setup ()

{

  Serial.begin (9600) ; //시리얼

   Serial2.begin(9600); //gps모듈

  printf_begin();

}

 

void loop () 

{

  for (int i=0; i < 3; i++)

  {

    Serial.print("- key length [b]: ");

    Serial.println(keyLength [i]);

    aesTest (keyLength[i]);

    delay(2000);

  }

}

 

void aesTest (int bits)

{

  aes.iv_inc();

  

  byte iv [N_BLOCK] ;

  int plainPaddedLength = sizeof(plain) + (N_BLOCK - ((sizeof(plain)-1) % 16)); // length of padded plaintext [B]

  byte cipher [plainPaddedLength]; // ciphertext (encrypted plaintext)

  byte check [plainPaddedLength]; // decrypted plaintext

  

  aes.set_IV(myIv);

  aes.get_IV(iv);

 

  Serial.print("- encryption time [us]: ");

  unsigned long ms = micros ();

  aes.do_aes_encrypt(plain,sizeof(plain),cipher,key,bits,iv);

  Serial.println(micros() - ms);

 

  aes.set_IV(myIv);

  aes.get_IV(iv);

  

  Serial.print("- decryption time [us]: ");

  ms = micros ();

  aes.do_aes_decrypt(cipher,aes.get_size(),check,key,bits,iv); 

  Serial.println(micros() - ms);

  

  Serial.print("- plain:   ");

  aes.printArray(plain,(bool)true); //print plain with no padding

 

  Serial.print("- cipher:  ");

  aes.printArray(cipher,(bool)false); //print cipher with padding

 

  Serial.print("- check:   ");

  aes.printArray(check,(bool)true); //print decrypted plain with no padding

  

  Serial.print("- iv:      ");

  aes.printArray(iv,16); //print iv

  printf("\n========================================\n");

  

}

 

 

6. 문제점 및 에러 내용

  gps 실시간 데이터 값을 aes로 암호화 해서 시리얼 창에 띄우고 싶은데 어떻게 해야 할지 모르겠습니다.

byte plain[] = "http://www.arduinolab.net/aes-encryptiondecryption-using-arduino-uno/"

이 부분을 gps 실시간 데이터 값으로 바꿔야 할꺼 같은데 어떻게 해야 할까요

 

 

이전글   |    WiFi보드에 대한 질문 2018-05-03
다음글   |    아두이노 휨센서 측정값을 부저소리 나게 하고 싶어요!!... 2018-05-04