成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HarmonyOS門鎖品類的臨時密碼、照片編解碼工具技術

系統 OpenHarmony
技術人員通過了解行業情況,查閱大量相關技術資料,自研出專用的解密工具,成功實現了臨時密碼設置功能;自研出照片編解碼工具,利用智能家居云作為中轉,實現了手機App照片實時查看功能。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

項目背景

隨著智能家居的普及,方便快捷的智能門鎖受到廣大消費者的歡迎,成為家居應用領域的一大熱門。在接入鴻蒙智聯智能門鎖領域時,我們的技術人員發現用戶在通過手機給智能門鎖設置臨時密碼,APP給門鎖下發加密后的密碼時,設備固件目前尚無與之對應的解密工具,并且智能門鎖都具備拍照功能用于保存異常情況的現場照片,所用模組無法直接將照片發送到三方服務保存,這些還處于空白技術領域。

邏輯實現

技術人員通過了解行業情況,查閱大量相關技術資料,自研出專用的解密工具,成功實現了臨時密碼設置功能;自研出照片編解碼工具,利用智能家居云作為中轉,實現了手機App照片實時查看功能。接下來我們看所述技術難點是如何實現的。

部分截圖展示:

#夏日挑戰賽#HarmonyOS門鎖品類的臨時密碼、照片編解碼工具技術-開源基礎軟件社區

一、臨時密碼設置流程

流程圖:

#夏日挑戰賽#HarmonyOS門鎖品類的臨時密碼、照片編解碼工具技術-開源基礎軟件社區

流程說明:

1.智慧生活APP生成臨時密碼發送到智能家居云保存,APP加密算法采用RSA的PKSC8加密算法。

2.智能家居云下發密文給門鎖設備。

3.門鎖解密密文,獲取臨時密碼、有效時間,然后保存到鎖內,臨時密碼有效時間最長為7天,最短為30分鐘。

4.臨時密碼設備設置成功,門鎖主動上報設置成功狀態。

5.智能家居云收到狀態后轉發狀態給APP。

H5代碼實現片段:

data() {
return {
TemporarypasswordObj: {
Creationtime: '',
action: '1',
id: '001',
sixteenbitSN: '',
userpassword: '123456', // 管理員密碼
Temporarypassword: '888888', // 臨時密碼
Availabletime: '', // 使用次數
effectivedate: '',
Failuretime: ''
},
publicKey: '',
}
},
methods: {
saveTemporaryPassword() {
// 構建密碼hash數據字符串
let hashedData = this.TemporarypasswordObj.sixteenbitSN +
this.TemporarypasswordObj.userpassword +
this.TemporarypasswordObj.Creationtime
// 進行哈希混淆
let hashedDatastr = window.hilink.sha256Encrypt(hashedData)
// 構建臨時密碼密文
let encryptionstringstr =
this.TemporarypasswordObj.Creationtime +
this.TemporarypasswordObj.action +
this.TemporarypasswordObj.id +
hashedDatastr +
this.TemporarypasswordObj.Temporarypassword +
this.TemporarypasswordObj.Availabletime +
this.TemporarypasswordObj.effectivedate +
this.TemporarypasswordObj.Failuretime
// 調用hilink接口進行RSA加密
let cipherText = window.hilink.rsaEncrypt(encryptionstringstr, this.publicKey)
// 發送臨時密碼
this.sendCiphertext(cipherText)
},
sendCiphertext(cipherText) {
try {
let data = { remoteCode: { cipherText: cipherText } }
window.hilink.setDeviceInfo('0', JSON.stringify(data), 'setInfocallback');
window.setInfocallback = res => {
let data = JSON.parse(res);
if (data.errcode === 0) {
console.log('臨時密碼發送成功');
} else {
console.log('臨時密碼發送失敗');
}
}
} catch (e) {
console.log(e)
}
}
}
}

固件代碼片段:

{
int ret;
size_t olen = 0;
size_t dec_len = 0;
const char *pers = "simple_rsa";
unsigned char *base_dec = NULL;
mbedtls_rsa_context rsa;
mbedtls_rsa_context tempctx;
mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_rsa_init(&rsa, MBEDTLS_RSA_PKCS_V21, MBEDTLS_MD_SHA256); // 初始化RSA結構體
mbedtls_rsa_init(&tempctx, MBEDTLS_RSA_PKCS_V21, MBEDTLS_MD_SHA256); // 初始化RSA結構體
mbedtls_entropy_init(&entropy); // 初始化熵結構體
mbedtls_ctr_drbg_init(&ctr_drbg); // 初始化隨機數結構體
ret = mbedtls_ctr_drbg_seed(&ctr_drbg, mbedtls_entropy_func, &entropy,
(const uint8_t *) pers, strlen(pers)); // 根據個性化字符串更新種子1
assert_exit(ret == 0, ret);
base_dec = rsa_global_hooks.rsa_allocate(BASE_DEC_LEN);
if(base_dec == NULL){
rsa_print_dbg("malloc base64 buff failed \r\n");
goto err_exit;
}
memset(base_dec,0,BASE_DEC_LEN);
ret = smartlock_rsa_readkeys(&tempctx);
assert_exit(ret == 0, ret);
ret = mbedtls_rsa_import( &rsa, &tempctx.N, &tempctx.P, &tempctx.Q, &tempctx.D, &tempctx.E);
assert_exit(ret == 0, ret);
ret = mbedtls_rsa_complete( &rsa );
assert_exit(ret == 0, ret);
mbedtls_base64_decode(base_dec,BASE_DEC_LEN,&dec_len,pchipertext,chiperlen);
ret = mbedtls_rsa_pkcs1_decrypt(&rsa, mbedtls_ctr_drbg_random, &ctr_drbg,
MBEDTLS_RSA_PRIVATE, &olen, base_dec, text, textlen);
assert_exit(ret == 0, ret);
text[olen] = 0;
rsa_global_hooks.rsa_deallocate(base_dec);
mbedtls_ctr_drbg_free(&ctr_drbg);
mbedtls_entropy_free(&entropy);
mbedtls_rsa_free(&tempctx);
mbedtls_rsa_free(&rsa);
return 0;
err_exit:
rsa_global_hooks.rsa_deallocate(base_dec);
mbedtls_ctr_drbg_free(&ctr_drbg);
mbedtls_entropy_free(&entropy);
mbedtls_rsa_free(&tempctx);
mbedtls_rsa_free(&rsa);
return -1;
}

二、照片上報展示

由于門鎖模組無法將圖片上報到三方服務器,只能利用智能家居云進行中轉,而智能家居云profile字符串類型有長度限制,因此需要將數據拆包后分包發送,APP在收到數據后進行數據包合并,最后完成圖片顯示。

工作流程:

#夏日挑戰賽#HarmonyOS門鎖品類的臨時密碼、照片編解碼工具技術-開源基礎軟件社區

代碼實現片段:

<img :src="picSrc" width="400" height="300" />
</template>
<script>
export default {
data() {
return {
picSrc: '',
picBase64: '',
index: 0,
}
},
created() {
this.deviceEvent()
},
method: {
deviceEvent() {
try {
window.deviceEventCallback = event => {
let eventJson = JSON.parse(event)
if (eventJson.sid.indexOf('imagePack') > -1) {
this.picBase64 += eventJson.data['image']
this.index ++
}
if (this.index === 6) {
this.picSrc = 'data:image/jpg;base64,' + this.picBase64
}
}
} catch (e) {
console.log(e)
}
}
},
}
</script>

以上為智能門鎖的解決方案,該方案已轉化為鴻蒙智聯標準化認證,可廣泛應用于門鎖、保險箱等產品。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2020-12-21 06:58:12

Web安全編解碼工具

2021-06-11 21:46:31

RocketMQ數據JSON

2022-09-05 08:12:28

Google二進制Protobuf

2021-09-16 15:05:39

鴻蒙HarmonyOS應用

2021-10-08 09:38:57

NettyChannelHand架構

2022-03-24 15:00:09

Harmony編解碼鴻蒙

2021-08-03 08:38:21

Netty解碼器使用

2023-08-23 14:53:05

火山引擎視頻云視頻編解碼

2021-11-08 18:37:45

MySQL解碼測試

2021-01-04 10:03:28

鴻蒙手機app開發顯示系統圖片

2021-01-07 10:04:43

鴻蒙HarmonyOS手機APP開發

2024-02-28 08:22:07

2023-04-10 09:39:11

2022-10-10 10:38:22

FedoraopenSUSE視頻編解碼

2024-07-05 08:27:07

2022-08-20 07:56:48

FFmpeg數字音頻流瀏覽器

2020-10-15 18:31:36

理解Netty編解碼

2021-03-02 14:19:30

人工智能根技術“十四五”

2022-07-07 08:57:45

WSA更新

2020-02-19 19:15:27

UbuntuLinux媒體編解碼器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区三区在线观看视频 | 国产精品一区二区av | 欧美激情在线精品一区二区三区 | 黄色香蕉视频在线观看 | 欧美一级在线观看 | 精品国产鲁一鲁一区二区张丽 | 久草网免费 | 91欧美精品 | 91免费观看视频 | 国产精品天堂 | 欧美精品一区在线观看 | a级黄色片视频 | 粉嫩高清一区二区三区 | 日本成人在线播放 | 国产免费av在线 | 九九久久久久久 | 午夜电影网 | 国产欧美在线观看 | 超黄视频网站 | 亚洲欧美中文字幕在线观看 | 91在线精品秘密一区二区 | 日韩av美女电影 | 国产精品1区2区3区 一区中文字幕 | 日韩免费视频一区二区 | 99精品久久久 | 久久久久久久国产 | 欧美在线日韩 | 欧美韩一区二区三区 | 亚洲免费人成在线视频观看 | 一区二区在线观看av | 久久精点视频 | 本地毛片 | a级毛片免费高清视频 | 午夜天堂精品久久久久 | 午夜免费福利电影 | 久久久久久国产精品免费免费 | 国产伦精品一区二区三区视频金莲 | 一区二区三区免费 | 欧美成人免费电影 | 久久国产免费看 | av激情在线 |