電子工程網(wǎng)

標題: 【開(kāi)發(fā)教程15】瘋殼·AI語(yǔ)音人臉識別-加解密及數據協(xié)議 [打印本頁(yè)]

作者: Linda-x    時(shí)間: 2022-7-29 16:49
標題: 【開(kāi)發(fā)教程15】瘋殼·AI語(yǔ)音人臉識別-加解密及數據協(xié)議
CC3200AI實(shí)驗教程
——瘋殼·開(kāi)發(fā)板系列
加解密及數據協(xié)議




    在《AI人臉系統架構》一節中,我們提到AI設備與服務(wù)器之間的通信協(xié)議及TEA加密。這一節主要來(lái)講解一下TEA加密另附上《AI設備通信協(xié)議》。
    使用IAR打開(kāi)AI_OCR工程,在工程中找到TEA.c,并打開(kāi)其關(guān)聯(lián)的頭文件GeekTEA.h,可以見(jiàn)到如圖1.0.1所示的在本工程中用到的與TEA加解密相關(guān)的函數。

   
    圖1.0.1 TEA加解密相關(guān)函數
    圖1
    由于加密前需要傳遞加密緩沖區大小的形參,故在加密前需要先調用獲取加密緩沖區的大小的函數getEncryptSize(),其函數內容如圖1.0.2所示。

   
    圖1.0.2 getEncryptSize()函數
    圖2
    接下來(lái)就是對加密數據進(jìn)行拼裝以及對數據進(jìn)行加密,如圖1.0.3所示為批量加密函數。

   
    圖1.0.3 加密函數
    圖3
    形參buf為存儲加密后的數據緩沖區、size為getEncryptSize獲取到大小、key為加密的秘鑰即程序中的globle_Auth_key或者Skey、IS_BIG_ENDIAN為大小端選擇(1為大端、0為小端,CC3200為大端)。
    大端與小端的區別在于數據的存儲在內存的高低位不同。
    大端模式,是指數據的高字節保存在內存的低地址中,而數據的低字節保存在內存的高地址中。
    小端模式,是指數據的高字節保存在內存的高地址中,而數據的低字節保存在內存的低地址中。
    解密部分和加密部分相似,是一個(gè)逆運算。如圖1.0.4為decryptBatch()即解密函數。

   
    圖1.0.4 decryptBatch函數
    圖4



    附:AI設備通信協(xié)議
    一、數據包種類(lèi)
    響應數據報文分為兩部分:報文頭、報文體。報文頭固定9個(gè)字節,頭四個(gè)字節是報文類(lèi)型,對應請求數據包的報文類(lèi)型,接下來(lái)四個(gè)字節是報文體(不包括報文頭)的長(cháng)度。最后一位是響應狀態(tài)碼,其中0xff固定表示秘鑰過(guò)期,需要更新秘鑰,其他以各自描述為準。
    請求數據報文分為兩部分:報文頭、報文體。報文頭固定8字節,頭四個(gè)字節是報文類(lèi)型,后四個(gè)是報文體的長(cháng)度。
    人臉注冊發(fā)送圖片報文類(lèi)型報文頭5個(gè)字節,第一字節報文類(lèi)型,后四個(gè)報文體長(cháng)度。
    1、通用數據包
    1.1 激活數據包
    設備第一次跟服務(wù)器建立連接,建立連接后發(fā)送該數據包。
    數據包格式:

   
    表1
    響應結果:
    如果該設備已經(jīng)激活、報文無(wú)法解析、鑒權失敗,將斷開(kāi)連接。
    解析并鑒權成功后,響應的數據包格式如下:

   
    表2
    1.2 激活確認包
    用于接收到激活數據包響應數據后返回確認信息。
    數據包格式:

   
    表3
    響應結果:
    如果解析包失敗或鑒權失敗,斷開(kāi)連接。
    解析并鑒權成功,之后數據交互使用skey加密。

   
    表4
    1.3 更新秘鑰數據包
    用于秘鑰過(guò)期時(shí)更新秘鑰,也用于心跳,如果一段時(shí)間沒(méi)有請求,發(fā)送該包。
    數據包格式:

   
    表5
    響應結果:
    如果解析包失敗或鑒權失敗,斷開(kāi)連接。
    解析成功,響應的數據包格式有兩種:

   
    表6
    1.4 更新秘鑰確認包
    用于發(fā)送更新秘鑰數據包接收到返回數據后進(jìn)行確認的數據包。如果未收到響應或超時(shí),可再次請求。如果請求成功,表示秘鑰更新成功,舊的skey將徹底無(wú)法使用,之后與服務(wù)器通訊將使用新的skey。
    數據包格式:

   
    表7
    響應結果:
    如果解析包失敗或鑒權失敗,斷開(kāi)連接。
    解析成功響應報文,之后的請求將使用新的skey。

   
    表8
    1.5 握手包
    已激活的設備在與服務(wù)器建立連接后,先發(fā)送該包鑒權。
    數據包格式:

   
    表9
    響應結果:
    如果解析包失敗或鑒權失敗,斷開(kāi)連接。
    解析成功響應報文。如果響應結果skey過(guò)期,發(fā)送1.3、1.4的包

  
    表10
    2、人臉識別業(yè)務(wù)數據包
    2.1 人臉注冊數據包
    人臉注冊流程:先發(fā)送注冊開(kāi)始數據包,收到確認后,依次發(fā)送各個(gè)不同的人臉數據包。最后發(fā)送注冊結束包,收到確認后結束人臉注冊。
    數據包格式:

   
    表11
    響應數據:
    如果解析包失敗或鑒權失敗,斷開(kāi)連接。
    解析成功,開(kāi)始發(fā)送不同類(lèi)型的人臉圖片。

   
    表12
    ②臉部信息注冊包
    人臉類(lèi)型代碼:0x00:正臉;0x01:左側臉;0x02:右側臉;0x03:閉眼;0x04:張嘴;0x05:微笑;0x06:眨眼。

   
    表13
    響應數據:

   
    表14
    ③結束注冊數據包
    注冊完成發(fā)送結束注冊包。

   
    表15
    響應數據:

   
    表16
    2.2 人臉刪除
    用于刪除人臉信息。
    數據包格式:

   
    表17
    加密字段格式:

   
    表18
    響應數據:
    如果解析包失敗或鑒權失敗,斷開(kāi)連接。
    解析成功。

   
    表19
    2.3 人臉識別
    用于已知一張臉,在人臉庫中找到最相似的臉,user_top_num表示返回相似度最高的前多少個(gè)人臉。
    數據包格式:

   
    表20
    加密字段格式:

   
    表21
    響應數據:
    如果解析包失敗或鑒權失敗,斷開(kāi)連接。
    解析成功,識別包格式:

   
    表22
    單次循環(huán)體格式,人臉類(lèi)型代碼:0x00:正臉;0x01:左側臉;0x02:右側臉;0x03:閉眼;0x04:張嘴;0x05:微笑;0x06:眨眼。

   
    表23
    2.4 人臉認證
    用于比較人臉與指定用戶(hù)id之間的相似程度。
    數據包格式:

   
    表24
    加密字段格式,人臉類(lèi)型代碼:0x00:正臉;0x01:左側臉;0x02:右側臉;0x03:閉眼;0x04:張嘴;0x05:微笑;0x06:眨眼。

   
    表25
    響應數據:
    如果解析包失敗或鑒權失敗,斷開(kāi)連接。
    解析成功,返回數據包格式:

   
    表26



如需定制開(kāi)發(fā),請通過(guò)官網(wǎng)“瘋殼”網(wǎng)頁(yè)底部的“聯(lián)系我們”進(jìn)行聯(lián)系

    文件下載請點(diǎn)擊: 【5】加解密及數據協(xié)議.pdf (688.68 KB)










歡迎光臨 電子工程網(wǎng) (http://selenalain.com/) Powered by Discuz! X3.4
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页