自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

??51CTO 開源基礎軟件社區(qū)??

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

項目背景

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

邏輯實現(xiàn)

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

部分截圖展示:

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

一、臨時密碼設置流程

流程圖:

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

流程說明:

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

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

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

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

5.智能家居云收到狀態(tài)后轉發(fā)狀態(tài)給APP。

H5代碼實現(xiàn)片段:

data() {
return {
TemporarypasswordObj: {
Creationtime: '',
action: '1',
id: '001',
sixteenbitSN: '',
userpassword: '123456', // 管理員密碼
Temporarypassword: '888888', // 臨時密碼
Availabletime: '', // 使用次數(shù)
effectivedate: '',
Failuretime: ''
},
publicKey: '',
}
},
methods: {
saveTemporaryPassword() {
// 構建密碼hash數(shù)據字符串
let hashedData = this.TemporarypasswordObj.sixteenbitSN +
this.TemporarypasswordObj.userpassword +
this.TemporarypasswordObj.Creationtime
// 進行哈?;煜?/span>
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)
// 發(fā)送臨時密碼
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('臨時密碼發(fā)送成功');
} else {
console.log('臨時密碼發(fā)送失敗');
}
}
} 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); // 初始化隨機數(shù)結構體
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字符串類型有長度限制,因此需要將數(shù)據拆包后分包發(fā)送,APP在收到數(shù)據后進行數(shù)據包合并,最后完成圖片顯示。

工作流程:

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

代碼實現(xiàn)片段:

<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>

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

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

??51CTO 開源基礎軟件社區(qū)??

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

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

2020-12-21 06:58:12

Web安全編解碼工具

2021-06-11 21:46:31

RocketMQ數(shù)據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解碼器使用

2021-11-08 18:37:45

MySQL解碼測試

2023-08-23 14:53:05

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

2021-01-04 10:03:28

鴻蒙手機app開發(fā)顯示系統(tǒng)圖片

2024-02-28 08:22:07

2021-01-07 10:04:43

鴻蒙HarmonyOS手機APP開發(fā)

2023-04-10 09:39:11

2022-10-10 10:38:22

FedoraopenSUSE視頻編解碼

2022-08-20 07:56:48

FFmpeg數(shù)字音頻流瀏覽器

2024-07-05 08:27:07

2020-10-15 18:31:36

理解Netty編解碼

2022-07-07 08:57:45

WSA更新

2021-03-02 14:19:30

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

2020-08-25 07:41:48

智能門鎖物聯(lián)網安全漏洞
點贊
收藏

51CTO技術棧公眾號