[發明專利]一種面向云存儲數據加解密的流式處理系統及方法有效
| 申請號: | 201611020970.3 | 申請日: | 2016-11-15 |
| 公開(公告)號: | CN108076106B | 公開(公告)日: | 2019-11-19 |
| 發明(設計)人: | 葉曉舟;任靜思 | 申請(專利權)人: | 中國科學院聲學研究所;北京中科智網科技有限公司 |
| 主分類號: | H04L29/08 | 分類號: | H04L29/08;H04L29/06 |
| 代理公司: | 11472 北京方安思達知識產權代理有限公司 | 代理人: | 王宇楊;陳琳琳<國際申請>=<國際公布> |
| 地址: | 100190 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 客戶端 事件發生時 服務器 緩沖區讀取數據 服務器緩沖區 客戶端緩沖區 云存儲服務器 云存儲數據 緩沖區 流式處理 非阻塞 加解密 可讀 可寫 填充 環形緩沖區 寫入服務器 加密處理 解密處理 寫入 | ||
1.一種面向云存儲數據加解密的流式處理系統,分別與客戶端、云存儲服務器端建立TCP連接,所述系統包括兩個環形緩沖區:客戶端到服務器緩沖區和服務器到客戶端緩沖區,其特征在于,
所述客戶端到服務器緩沖區用于處理兩個非阻塞socket IO事件:客戶端socket可讀事件,此事件發生時需要從客戶端socket讀取數據,經過加密處理后填充到該緩沖區;云存儲服務器端socket可寫事件,此事件發生時需要從該緩沖區讀取數據,并寫入服務器端socket;
所述服務器到客戶端緩沖區用于處理兩個非阻塞socket IO事件:服務器socket可讀事件,此事件發生時需要從服務器socket讀取數據,經過解密處理后填充到該緩沖區;客戶端socket可寫事件,此事件發生時需要從該緩沖區讀取數據,并寫入到客戶端socket;
所述環形緩沖區是一段固定大小的連續內存空間,數據的寫入和數據的讀取能夠循環利用同一段內存空間;當寫入數據時,從環形緩沖區的Tail指針開始連續向后寫入,如果到達緩沖區結尾,則從首部開始繼續寫入,最后將Tail指針指向新寫入數據的末尾;當從環形緩沖區讀取數據時,從Head指針開始連續向后讀取,如果到達緩沖區結尾,則從首部開始繼續讀取,最后將Head指針指向讀取數據的結尾;
對于客戶端到服務器緩沖區和服務器到客戶端緩沖區,定義從環形緩沖區tail指針到環形緩沖區結尾部分為in_buf1,從環形緩沖區起始到head指針為in_buf2;當接收到socket可讀事件時,進行如下步驟的操作:
步驟S1)獲取in_buf1大小為length_in_buf1,若不為0,則從可讀socket中讀取長度為length_in_buf1的數據寫入in_buf1;
步驟S2)若可讀socket為客戶端socket,則對in_buf1中的數據采用流式加密算法進行加密處理,處理后的數據大小不變仍可以放入in_buf1;若可讀socket云存儲服務器端socket,則對in_buf1中的數據采用流式加密算法進行解密處理,處理后的數據大小不變放入in_buf1;
步驟S3)獲取in_buf2大小為length_in_buf2,
步驟S4)判斷length_in_buf2是否為0,如果判斷是否定的,則從可讀socket中讀取長度為length_in_buf2的數據寫入in_buf2;準入步驟S5);否則,轉入步驟S6);
步驟S5)若可讀socket為客戶端socket,則對in_buf2中的數據采用流式加密算法進行加密處理,處理后的數據大小不變仍可以放入in_buf2;若可讀socket云存儲服務器端socket,則對in_buf2中的數據采用流式加密算法進行解密處理,處理后的數據大小不變放入in_buf2;
步驟S6)重置監聽非阻塞socket IO事件。
2.根據權利要求1所述的面向云存儲數據加解密的流式處理系統,其特征在于,若環形緩沖區已滿,則只監聽socket可寫事件;若環形緩沖區為空,則只監聽socket可讀事件;若環形緩沖區非滿也非空,則既監聽socket可寫事件,又監聽socket可讀事件。
3.根據權利要求2所述的面向云存儲數據加解密的流式處理系統,其特征在于,對于客戶端到服務器緩沖區和服務器到客戶端緩沖區,定義從環形緩沖區head指針到環形緩沖區結尾部分為out_buf1,從環形緩沖區起始到tail指針為out_buf2;當接收到socket可寫事件時,進行操作步驟如下:
步驟T1)獲取out_buf1大小為length_out_buf1,若不為0,則向可寫socket中寫入長度為length_out_buf1的out_buf1數據;
步驟T2)調用socket接口的send函數發送數據;
步驟T3)獲取out_buf2大小為length_out_buf2;
步驟T4)判斷length_out_buf2是否為0,如果判斷是否定的,則向可寫socket中寫入長度為length_out_buf2的out_buf2數據;轉入步驟T2);否則,轉入步驟T5);
步驟T5)重置監聽非阻塞socket IO事件。
4.一種面向云存儲數據加解密的流式處理方法,基于權利要求1-3之一所述的系統實現,所述方法包括:
步驟1)對于客戶端到服務器緩沖區和服務器到客戶端緩沖區,定義從環形緩沖區tail指針到環形緩沖區結尾部分為in_buf1,從環形緩沖區起始到head指針為in_buf2;定義從環形緩沖區head指針到環形緩沖區結尾部分為out_buf1,從環形緩沖區起始到tail指針為out_buf2;
步驟2)接收非阻塞socket IO事件,并判斷事件的類型;所述事件為socket可讀事件或socket可寫事件;
步驟3)如果所述事件的類型為socket可讀事件,轉入步驟4),否則,轉為步驟9);
步驟4)獲取in_buf1大小為length_in_buf1,若不為0,則從可讀socket中讀取長度為length_in_buf1的數據寫入in_buf1;
步驟5)若可讀socket為客戶端socket,則對in_buf1中的數據采用流式加密算法進行加密處理,處理后的數據大小不變仍可以放入in_buf1;若可讀socket為云存儲服務器端socket,則對in_buf1中的數據采用流式加密算法進行解密處理,處理后的數據大小不變放入in_buf1;
步驟6)獲取in_buf2大小為length_in_buf2,
步驟7)判斷length_in_buf2是否為0,如果判斷是否定的,則從可讀socket中讀取長度為length_in_buf2的數據寫入in_buf2;準入步驟8);否則,轉入步驟13);
步驟8)若可讀socket為客戶端socket,則對in_buf2中的數據采用流式加密算法進行加密處理,處理后的數據大小不變仍可以放入in_buf2;若可讀socket為云存儲服務器端socket,則對in_buf2中的數據采用流式加密算法進行解密處理,處理后的數據大小不變放入in_buf2;
步驟9)獲取out_buf1大小為length_out_buf1,若不為0,則向可寫socket中寫入長度為length_out_buf1的out_buf1數據;
步驟10)調用socket接口的send函數發送數據;
步驟11)獲取out_buf2大小為length_out_buf2;
步驟12)判斷length_out_buf2是否為0,如果判斷是否定的,則向可寫socket中寫入長度為length_out_buf2的out_buf2數據;轉入步驟10);否則,轉入步驟13);
步驟13)重置監聽非阻塞socket IO事件。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國科學院聲學研究所;北京中科智網科技有限公司,未經中國科學院聲學研究所;北京中科智網科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611020970.3/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:信息推薦方法、應用服務器和應用客戶端
- 下一篇:一種業務下沉處理系統和中間件





