copko

Arduino sending data with md5

Mar 25th, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.60 KB | None | 0 0
  1. #include <SPI.h>
  2. #include <Ethernet.h>
  3. #include "MD5.h"
  4.  
  5. //MAC adresa Arduina
  6. byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  7. char server[] = "www.spseke.sk";    // adresa webového servera (napríklad www.spseke.sk)
  8.  
  9. // IP konfigurácia pre Arduino v prípade, že sa nepodarí načítať ju cez DHCP
  10. IPAddress ip(192, 168, 0, 177);
  11. IPAddress gw(192,168 , 1, 1);
  12. IPAddress dnserver(8, 8, 8, 8);
  13. IPAddress sm(255, 255, 255, 0);
  14.  
  15. // Inicializácia webového klienta
  16. EthernetClient client;
  17.  
  18. void setup() {
  19.  
  20.   Serial.begin(9600);
  21.  
  22.   // ak sa nepodarí načítať IP adresu cez DHCP
  23.   if (Ethernet.begin(mac) == 0) {
  24.     Serial.println("Nepodarilo sa načítať adresu cez DHCP"); //výpis chybovej hlášky na serial monitor
  25.     Ethernet.begin(mac, ip, dnserver, gw, sm); //nastavenie statických parametrov do shieldu
  26.   }
  27.  
  28.   delay(1000);
  29.   Serial.println("connecting...");
  30.  
  31.   String data="teplota=23&dvere1=otv&okno2=zat"; //data posielane cez GET request
  32.   String salted="Qx9d3 "+data+" P4tB1"; //osolene data
  33.  
  34.   int len=salted.length()+1; //zistenie dĺžky osolených dát
  35.  
  36.   char beforeMD5[len]; //vytvorenie statického poľa znakov pre MD5 algoritmus
  37.   salted.toCharArray(beforeMD5,len); //konverzia dátového typu String na pole znakov (char), ktoré vyžaduje ako vstup funkcia pre MD5 hash (make_hash)
  38.  
  39.   unsigned char* hash=MD5::make_hash(beforeMD5); //príprava reťazca pre tvorbu hashu
  40.   char *md5str = MD5::make_digest(hash, 16); //tvorba hashu a jeho uloženie do premennej md5str
  41.  
  42.   data+="&hash="; //pridanie novej premennej do GET requestu
  43.   data+=md5str; //a za premennú pridáme jej hodnotu, ktorou je MD5 hash
  44.  
  45.   free(md5str); //odstránenie nepotrebných premenných z RAM
  46.   free(beforeMD5); //odstránenie nepotrebných premenných z RAM
  47.   free(hash);  //odstránenie nepotrebných premenných z RAM
  48.  
  49.   // spojenie na server
  50.   if (client.connect(server, 80)) {
  51.     Serial.println("connected");
  52.     // Make a HTTP request:
  53.     client.print("GET /uloz.php?");
  54.     client.print(data);
  55.     client.println(" HTTP/1.1");
  56.     client.println("Host: www.spseke.sk");
  57.     client.println("Connection: close");
  58.     client.println();
  59.   } else {
  60.     // výpis chybovej hlášky v prípade neúspešného spojenia na server
  61.     Serial.println("connection failed");
  62.   }
  63. }
  64.  
  65. void loop() {
  66.   // výpis odpovede zo servera
  67.   if (client.available()) {
  68.     char c = client.read();
  69.     Serial.print(c);
  70.   }
  71.  
  72.  
  73.   if (!client.connected()) {
  74.     Serial.println();
  75.     Serial.println("disconnecting.");
  76.     client.stop();
  77.  
  78.     // "zastavenie" arduina
  79.     while (true);
  80.   }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment