簡體   English   中英

在 ESP32 草圖中隱藏 ssid 密碼的選項

[英]Options to hide ssid password in an ESP32 sketch

我正在使用ESP32 ,但我認為該問題適用於esp8266或 Arduino WIFI。 這就是我擴展標簽的原因。 如果我錯了,請告訴我。

我有一個使用 WIFI 發送 http 請求的工作草圖。

我當前的代碼以明文形式包含 SSID 和密碼:

const char *ssid = "my_secure_router";
const char *password = "clear_text_password_is_bad";

void initWifi(){
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println(WiFi.status());
    Serial.print("*");
  }
  Serial.print("WiFi connected with IP: ");
  Serial.println(WiFi.localIP());
}

在代碼運行時,我無法將代碼推送到 git 存儲庫,因為它包含明文密碼。

是否有任何簡單的選項可以從上述代碼中消除明文密碼?

人們經常通過使用未檢入存儲庫的第二個文件來做到這一點。 他們通常將文件命名為secrets.hconfig.h

然后你會改變你的代碼看起來像:

#include "secrets.h"

void initWifi(){
  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.println("");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println(WiFi.status());
    Serial.print("*");
  }
  Serial.print("WiFi connected with IP: ");
  Serial.println(WiFi.localIP());
}

並將其放入secrets.h

#pragma once

#define WIFI_SSID "my_secure_router";
#define WIFI_PASSWORD "clear_text_password_is_bad";

如果包含兩次, #pragma行將停止處理該文件,這避免了多次定義WIFI_SSIDWIFI_PASSWORD的錯誤。

然后將secrets.h添加到.gitignore中,這樣git就不會簽入。

作為獎勵,您可以創建一個secrets.h-example文件,其中包含存儲在其中的所有秘密的虛擬字符串。

請注意,我將兩個字符串從 C++ 字符數組變量更改為預處理器常量。 在這種情況下,將字符串存儲在變量中並沒有任何好處,而使用預處理器常量可以簡化它們的使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM