<wbr id="9qp22"><legend id="9qp22"><rt id="9qp22"></rt></legend></wbr>
<th id="9qp22"><noframes id="9qp22"><form id="9qp22"></form></noframes></th>

      <dd id="9qp22"><big id="9qp22"><video id="9qp22"></video></big></dd>
      <th id="9qp22"></th>
        <rp id="9qp22"><acronym id="9qp22"></acronym></rp>
        <dd id="9qp22"><pre id="9qp22"></pre></dd>

        1. <dd id="9qp22"><pre id="9qp22"></pre></dd>
          1. 打印

            [技術問答] 賽元單片機的UID在哪里?

            [復制鏈接]
            322|13
            跳轉到指定樓層
            樓主
            數據手冊上沒有,是不是賽元單片機沒這個功能?
            賽元單片機用什么加密?

            使用特權

            評論回復

            評論

            knk 2019-10-7 20:14 回復TA
            91/92/93的芯片可以燒錄滾動碼,最長可以支持32位,95的芯片有UID 
            沙發
            | 2019-9-29 13:57 | 只看該作者
            賽元MCU就沒有這個,我的辦法是產生4個隨機數,按這4個地址在CODE區里找到4個字節的數據作為UID,這樣也可以,跟自帶的UNIQUE ID效果一樣

            使用特權

            評論回復
            板凳
             樓主 | 2019-9-29 14:36 | 只看該作者
            taobaofarmer 發表于 2019-9-29 13:57
            賽元MCU就沒有這個,我的辦法是產生4個隨機數,按這4個地址在CODE區里找到4個字節的數據作為UID,這樣也可 ...

            請問你隨機數的種子是什么?

            使用特權

            評論回復
            地板
            | 2019-9-29 15:06 | 只看該作者
            不需要種子呀

            使用特權

            評論回復
            5
            | 2019-9-29 15:51 | 只看該作者
            賽元MCU,前256B禁止MOVC操作,可用于程序加密。加密方式可見92系列MCU應用指南,或工具使用手冊

            使用特權

            評論回復
            6
             樓主 | 2019-9-30 17:35 | 只看該作者

            不需要種子?用的什么高級方法,沒聽說過呀?

            使用特權

            評論回復
            7
            | 2019-10-2 20:41 | 只看該作者
            就用標準C函數產生一個隨機數,還需要什么種子?

            使用特權

            評論回復
            8
             樓主 | 2019-10-2 23:22 | 只看該作者
            算了,看來你根本不知道這回事。
            rand()會返回一隨機數值,范圍在0至RAND_MAX 間。在調用此函數產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子為1。關于隨機數種子請參考srand()。

            使用特權

            評論回復
            9
            | 2019-10-7 13:55 | 只看該作者
            樓上高人,今天我又學習了,搞了22年嵌入式開發今天終于又被學習了一回,RAND()之前確實沒用過,也沒啥用,所以一直沒去了解它,剛剛百度了下SRAND(),確實有種子這回事兒,我之前的架構是在上位機軟件里下發4個隨機數給MCU,然后MCU把這4個隨機數作為指針指向CODE區里相應位置的數據返回給上位機軟件,作為MCU的UNIQUE ID,然后進行加密算法亂七八糟的一頓計算,現在看來還真得修改下上位機軟件,每次rand()之前重新設置下種子,百度上介紹的經驗是取當時的時間,這個方法不錯,我就準備這么做了

            使用特權

            評論回復
            10
             樓主 | 2019-10-7 20:52 | 只看該作者
            taobaofarmer 發表于 2019-10-7 13:55
            樓上高人,今天我又學習了,搞了22年嵌入式開發今天終于又被學習了一回,RAND()之前確實沒用過,也沒啥用, ...

            不是什么高人,C語言課本里好像就有介紹,估計你是時間長不用,所以忘了。
            對于隨機數我記得rand這類函數都是通過線性同余法得到偽隨機數,一般種子可以選
            1、時間,如定時器值
            2、AD采集溫度或電源噪聲
            3、UID
            4、搭建硬件電路產生種子

            種子是隨機數的重點。
            也有單片機自帶隨機數發生器的,那就比較方便了,比如STM32F4自帶了硬件隨機數發生器(RNG)!

            使用特權

            評論回復
            11
            | 2019-10-12 13:46 | 只看該作者
            仔細研究了下種子的問題,確實是重中之重,一頓折騰之后我在VC++6.0里實現如下:
                    BYTE  m;
                    WORD  i, crc16;
                    DWORD rand_data[4], dwBuf0, dwBuf1, dwBuf2;

                    SYSTEMTIME sysTime;
                    GetLocalTime(&sysTime);

                    i = sysTime.wYear      +
                            sysTime.wMonth     +
                            sysTime.wDay       +
                            sysTime.wDayOfWeek +
                            sysTime.wHour      +
                            sysTime.wMinute    +
                            sysTime.wSecond    +
                            sysTime.wMilliseconds;
                   
                    dwBuf0   = ~i;
                    dwBuf0 <<= 16;
                    dwBuf0  += i;

                    for(m=0; m<4; m++)
                    {
                            //循環右移5位后的數據作為下一個隨機數的種子
                            dwBuf1  = dwBuf0 << 27;
                            dwBuf1 &= 0xfe000000;

                            dwBuf2  = dwBuf0 >> 5;
                            dwBuf2 &= 0x01ffffff;

                            dwBuf0  = dwBuf1 + dwBuf2;
                           
                            dwBuf0  = ~dwBuf0;
                            dwBuf0 ^=  0xxxxxxxxx;
                   
                            srand(dwBuf0);
                            rand_data[m] = rand();
                    }
            你覺得這個效果如何?

            使用特權

            評論回復
            12
             樓主 | 2019-10-12 17:15 | 只看該作者
            taobaofarmer 發表于 2019-10-12 13:46
            仔細研究了下種子的問題,確實是重中之重,一頓折騰之后我在VC++6.0里實現如下:
                    BYTE  m;
                    WORD   ...

            如果實在電腦上,種子用時間CRC校驗值做種子最方便,如果是單片機你這種移位處理是最常用的

            使用特權

            評論回復
            13
            | 2019-10-17 18:07 | 只看該作者
            常用的CRC算法有哪些

            使用特權

            評論回復
            掃描二維碼,隨時隨地手機跟帖
            您需要登錄后才可以回帖 登錄 | 注冊

            本版積分規則

            我要發帖 投訴建議 創建版塊 申請版主

            快速回復

            您需要登錄后才可以回帖
            登錄 | 注冊
            高級模式

            論壇熱帖

            在線客服 快速回復 返回頂部 返回列表
            成人短片线上看