STM32程式如何加密更安全?

時間 2021-05-30 00:05:10

1樓:meijc119

1,如果板子上有外部儲存器,可以先編寫乙個程式,利用演算法把id計算得到一些值存入外部儲存器,然後再燒寫真正的程式,真正的程式去校驗外部儲存器的資料是否合法即可

2,利用板子上按鍵組合,或是上電按住某些鍵,程式在這個時候利用演算法把id計算得到一些值存入程式區(stm8為EE區),程式執行時去驗證程式區資料是否正確

3,軒微程式設計器有軟體加密的功能,程式設計器會讀晶元id,根據演算法直接改寫緩衝區,達到軟體加密的作用

4,讀出的id通過一定演算法,例如異或加上乙個數,得到的資料存入flash(只執行一次,執行後標誌位也存入flash),下次讀到這個標誌位,就不執行這個程式。//9272078

四、做軟體加密時注意

1,不要在程式中直接出現id位址,例如STM32:1FFFF7E8 1FFFF7EC 1FFFF7F0 STM8: 0x4865~0x4870

2, 利用校驗和或是crc對程式區進行校驗,防止改程式

不然就象樓上說的,500就被改了

如果讀id直接出現id位址,編譯後燒寫檔案找到1ffff7e8改成0x800f000,再在0x800f000裡面填上母片的id,程式就被破解了

2樓:

給個思路:

1、讀取STM32的UID,傳送給PC或伺服器請求進行授權操作。

2、PC或伺服器根據UID和加密演算法計算出相應的金鑰,然後回傳給STM32的程式進行授權。

3、STM32收到金鑰後,寫入Flash或EEPROM儲存下來。

4、STM32每次啟動執行時,從Flash或EEPROM讀取出金鑰,然後根據相應的演算法對UID進行加密運算,將運算結果和金鑰進行對比;或對金鑰進行解密運算,將解密結果和UID進行對比。

5、如果UID和金鑰匹配,則可認為這顆晶元裡執行的程式是經過授權的。不匹配則進行其他處理。

這樣,就算將晶元內的二進位制程式資料COPY出來,換了顆晶元也沒法執行。

如何系統地入門學習stm32?

無際微控制器 我從事微控制器開發多年,用過非常多晶元,有stc 中穎 GD 新唐 BLE Zigbee NXP 還有一些中國產SOC等等,唯獨ST的讓我最省心,不管是STM8還是STM32。省心只要是體現在穩定,只需要按照常規方法配置就不會有亂七八糟奇奇怪怪的問題出現。之前碰到過最蛋疼的晶元,有些F...

STM32如何實現不同埠下引腳的資料輸入輸出?

這樣的硬體設計是不合理的,但這不意味著LCD沒法使用,如果LCD介面分散在PORTD和E,那你在輸出資料的時候要特別小心。譬如使用了PORTD的高八位和PORTE的低八位,然後你要輸出16位資料 譬如0x4E96 那麼必須進行兩次操作。且必須注意不可改變PORTD的低8位和PORTE的高8位的管腳值...

STM32如何實現對步進電機的精準定位

硬體實戰君 第一 選擇一款好的驅動器很重要。根據你的應用需求,選擇合適的驅動器,要達到精確控制需要驅動器有細分功能。比如32細分控制模式時電機運動會更平滑。第二 使用步進電機加減速控制演算法。步進電機給脈衝就能轉,脈衝停止電機就會停止,這是人盡皆知的。但是電機在變頻啟動時會出現丟步,高速突然停止時會...