정보나눔

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

gps 데이터형인 float를 aes 암호화
겨울곰이야 | 2018-05-08

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

  메가2560

 

 

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

아두이노 스케치

 

 

3. 사용한 센서 모델명

  neo-06

 

 

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

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

 

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

#include <TinyGPS.h>
TinyGPS gps;
void getgps(TinyGPS &gps);
 void setup()
{
  Serial.begin(9600);
  Serial2.begin(9600);//gps
  Serial3.begin(9600);//bluetooth 모듈은 앱에서 gps 값을 확인하기위해 있는 것이라 무관
}
void loop()
{
  while(Serial2.available())     // While there is data on the RX pin...
  {
      int c = Serial2.read();    // load the data into a variable...
      if(gps.encode(c))      // if there is a new valid sentence...
      {
        getgps(gps);         // then grab the data.
      }   
  }
}
void getgps(TinyGPS &gps)
{
   float latitude, longitude;
   gps.f_get_position(&latitude, &longitude);
  Serial.print("Lat: "); 
  Serial.println(latitude,5); //이 부분이 gps에서의 위도를 float형으로 보여줍니다.
  Serial.print("Long: "); 
  Serial.println(longitude,5);
  delay(1000);
}

이 예문을 통해서 gps 데이터 값을 float 형으로 받는 것을 확인했습니다.

#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) ;
  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("- plain:   ");
  aes.printArray(plain,(bool)true); //print plain with no padding
Serial.print("- cipher:  ");
  aes.printArray(cipher,(bool)false); //print cipher with padding

이 예제에 plant 부분만 수정하면 되는 줄 알았으나 되지를 않습니다.

6. 문제점 및 에러 내용

plain 부분에 GPS값을 넣어주시면되는데, GPS 센서로 부터 값을 받아오신 후 이 받은값을 plain 대신 넣어주시면 될 것 같습니다.

라고 하셨는데 이 부분을 어떻게 해결해야 할 지 모르겠습니다.

gps 데이터 값은 float형이고 평문은 int 형인데 float로 바꾸면 에러가 뜨고 두 개를 어떤 식으로 해야할지 문의드립니다.

이전글   |    아두이노를 이용한 LED 점등,소등 2018-05-08
다음글   |    오랜지보드 wifi openweathermap 이용 관련 질문... 2018-05-09