国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種面向醫(yī)療機(jī)構(gòu)的防止泄露患者隱私的系統(tǒng)及其方法與流程

      文檔序號(hào):12670164閱讀:228來源:國知局
      一種面向醫(yī)療機(jī)構(gòu)的防止泄露患者隱私的系統(tǒng)及其方法與流程

      本發(fā)明涉及醫(yī)療健康領(lǐng)域,尤其涉及一種面向醫(yī)療機(jī)構(gòu)的防止泄露患者隱私的系統(tǒng)及其方法。



      背景技術(shù):

      近年來,侵犯公民個(gè)人信息及其所滋生的侵害事件不斷發(fā)生,特別是近來一系列的詐騙電話引發(fā)的惡性事件,引發(fā)了人們對(duì)個(gè)人隱私保護(hù)的重視,首當(dāng)其沖的患者就診信息中的隱私保護(hù)問題成為了人們的研究熱點(diǎn)。

      申請(qǐng)?zhí)枮?01510059777.X的《患者病歷數(shù)據(jù)保密方法及系統(tǒng)》分別設(shè)置身份數(shù)據(jù)庫和病史數(shù)據(jù)庫,將患者的隱私信息和病史數(shù)據(jù)分開存儲(chǔ),通過使用公共密鑰的方法對(duì)兩個(gè)數(shù)據(jù)庫的信息進(jìn)行匹配,只有正確匹配的數(shù)據(jù)才能輸出,起到隱私保護(hù)的目的,該方法理論上非常完美,但是每次病史數(shù)據(jù)的變化勢(shì)必造成匹配上的變動(dòng),同時(shí)對(duì)于既有的系統(tǒng)和數(shù)據(jù)改造的成本也比較大;

      申請(qǐng)?zhí)枮?01510876310.4的《一種醫(yī)療隱私數(shù)據(jù)自加密及解密的方法》使用隨機(jī)數(shù)種子,產(chǎn)生一個(gè)密鑰區(qū),將隨機(jī)生成的密鑰,將密鑰的第一個(gè)數(shù)字存放在密鑰區(qū)的位置p[81],然后在p[密鑰的第一個(gè)數(shù)]中存放密鑰的第二個(gè)數(shù)字,依次類推,最后將隱私數(shù)據(jù)加密后插入密鑰區(qū)。這種思路非常精妙,與本方案提供的密鑰隱藏于密文的方法有著異曲同工的效果,該方案側(cè)重于密鑰的隱藏,沒有考慮到存儲(chǔ)空間上的浪費(fèi)問題,同時(shí)也不能防止內(nèi)部人員通過正常操作途徑泄漏患者隱私的行為。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明為克服上述的不足之處,目的在于提供一種面向醫(yī)療機(jī)構(gòu)的防止泄露患者隱私的系統(tǒng)及其方法,系統(tǒng)改造方便低廉,能夠完美對(duì)接醫(yī)院的信息管理系統(tǒng),該方法能夠有效防止患者隱私被內(nèi)部或外部人員竊取,同時(shí)也提供了一種將密碼隱藏于密文中的方法。

      本發(fā)明是通過以下技術(shù)方案達(dá)到上述目的:一種面向醫(yī)療機(jī)構(gòu)的防止泄露患者隱私的系統(tǒng),在應(yīng)用系統(tǒng)和數(shù)據(jù)庫之間插入服務(wù)接口,所述服務(wù)接口包括:存取服務(wù)模塊、SQL語句分解模塊、數(shù)據(jù)庫元數(shù)據(jù)管理模塊、行為監(jiān)控模塊、數(shù)據(jù)模擬模塊、數(shù)據(jù)加密模塊、數(shù)據(jù)解密模塊、數(shù)據(jù)存儲(chǔ)模塊;所述存取服務(wù)模塊與SQL語句分解模塊連接,SQL語句分解模塊與數(shù)據(jù)庫元數(shù)據(jù)管理模塊、行為監(jiān)控模塊連接,行為監(jiān)控模塊與數(shù)據(jù)模擬模塊、數(shù)據(jù)存取模塊連接,數(shù)據(jù)存取模塊與數(shù)據(jù)加密模塊、數(shù)據(jù)解密模塊連接;所述存取服務(wù)模塊用于提取SQL語句發(fā)送給SQL語句分解模塊,SQL語句分解模塊將分解提取的數(shù)據(jù)發(fā)送給數(shù)據(jù)庫元數(shù)據(jù)管理模塊,數(shù)據(jù)庫元數(shù)據(jù)管理模塊對(duì)數(shù)據(jù)進(jìn)行判斷處理并進(jìn)行一次行為監(jiān)測(cè),行為監(jiān)控模塊用于進(jìn)行二次行為監(jiān)測(cè),數(shù)據(jù)模擬模塊模擬產(chǎn)生偽信息,數(shù)據(jù)加密模塊和數(shù)據(jù)解密模塊用于對(duì)患者隱私數(shù)據(jù)的加密和解密,數(shù)據(jù)存取模塊用于對(duì)數(shù)據(jù)庫的存取操作。

      作為優(yōu)選,所述存取服務(wù)模塊包括數(shù)據(jù)存儲(chǔ)接口和數(shù)據(jù)提取接口,與應(yīng)用系統(tǒng)連接。

      作為優(yōu)選,所述存取服務(wù)模塊以RESTful服務(wù)的形式對(duì)外提供數(shù)據(jù)存儲(chǔ)接口和數(shù)據(jù)提取接口。

      一種面向醫(yī)療機(jī)構(gòu)的防止泄露患者隱私的方法,包括,數(shù)據(jù)存儲(chǔ)處理步驟、數(shù)據(jù)提取處理步驟;

      數(shù)據(jù)存儲(chǔ)處理步驟:

      11)存取服務(wù)模塊的數(shù)據(jù)存儲(chǔ)接口接收應(yīng)用系統(tǒng)發(fā)送的數(shù)據(jù),提取SQL語句發(fā)送給SQL語句分解模塊;

      12)SQL語句分解模塊分解SQL語句,提取信息,并發(fā)送給數(shù)據(jù)庫元數(shù)據(jù)管理模塊;

      13)數(shù)據(jù)庫元數(shù)據(jù)管理模塊判斷是否存在數(shù)據(jù)提取的行為,如果存在數(shù)據(jù)提取的行為,則返回錯(cuò)誤信息;若不存在,則繼續(xù)判斷是否存在對(duì)隱私數(shù)據(jù)的操作,如果涉及隱私數(shù)據(jù)的操作則執(zhí)行步驟14),否則執(zhí)行步驟15)。

      14)通過數(shù)據(jù)加密模塊對(duì)隱私數(shù)據(jù)進(jìn)行加密;

      15)數(shù)據(jù)存儲(chǔ)模塊將數(shù)據(jù)存入數(shù)據(jù)庫;

      數(shù)據(jù)提取處理步驟:

      21)存取服務(wù)模塊的數(shù)據(jù)提取接口接收應(yīng)用系統(tǒng)發(fā)送的數(shù)據(jù),提取SQL語句發(fā)送給SQL語句分解模塊;

      22)SQL語句分解模塊分解SQL語句,提取信息,并發(fā)送給數(shù)據(jù)庫元數(shù)據(jù)管理模塊;

      23)數(shù)據(jù)庫元數(shù)據(jù)管理模塊判斷是否存在通過數(shù)據(jù)提取接口對(duì)數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行修改的行為,如果存在,則返回錯(cuò)誤信息;若不存在,則繼續(xù)判斷是否存在對(duì)隱私數(shù)據(jù)的提取,如果涉及隱私數(shù)據(jù)的提取操作則執(zhí)行步驟24),否則執(zhí)行步驟25);

      24)行為監(jiān)控模塊,判斷是否存在窺探隱私的行為,若不存在窺探隱私行為,則執(zhí)行步驟25);若存在則調(diào)用數(shù)據(jù)模擬模塊,返回模擬數(shù)據(jù);

      25)數(shù)據(jù)存取模塊將請(qǐng)求的SQL語句提交數(shù)據(jù)庫,返回結(jié)果集;

      26)行為監(jiān)控模塊根據(jù)數(shù)據(jù)存取模塊返回的結(jié)果集判斷是否存在窺探隱私的行為,如果存在窺探隱私的行為,則調(diào)用數(shù)據(jù)模擬模塊,返回模擬數(shù)據(jù);否則,調(diào)用數(shù)據(jù)解密模塊解密隱私數(shù)據(jù)并返回?cái)?shù)據(jù),并記錄接口調(diào)用賬戶和所操作的時(shí)間和涉及患者的唯一標(biāo)識(shí)。

      作為優(yōu)選,所述數(shù)據(jù)加密模塊的加密步驟包括:

      31)輸入明文;

      32)在加密算法字典中隨機(jī)選擇一種加密算法和其對(duì)應(yīng)的加密算法標(biāo)識(shí),算法標(biāo)識(shí)使用字符串表示,記字符串的長度為El;

      33)隨機(jī)生成一個(gè)符合加密算法密鑰長度要求的字符串作為密碼,使用步驟32)隨機(jī)選擇的加密算法,對(duì)明文進(jìn)行加密,得到密文的長度Ml。

      35)加密算法標(biāo)識(shí)和密碼字符串進(jìn)行拼接,生成待隱藏的字符串strhide,并記錄strhide的長度為Pl;

      35)設(shè)置一個(gè)字符串buffer,將密文第一個(gè)字符遷移到buffer中;

      36)取buffer第一個(gè)字符的ASCII碼的十進(jìn)制值n除以密文長度Ml的余數(shù)k;

      37)將密文位置k處的字符遷移到buffer的前面,同時(shí)在密文的位置k處插入strhide的第一個(gè)字符h,將strhide的第一個(gè)字符h移除;

      38)重復(fù)步驟36)至步驟37),直至strhide中的字符全部移除;

      39)將buffer放到密文的前面,生成新的密文;

      310)將Pl轉(zhuǎn)化為兩個(gè)字符長度的字符串,不足兩位的前面補(bǔ)0,放在密文的首部,將El轉(zhuǎn)化為一個(gè)字符長度的字符串放在密文的首部,輸出密文。

      作為優(yōu)選,所述數(shù)據(jù)解密模塊的解密步驟包括:

      41)輸入密文,得到密文和密文的長度Ml;

      42)截取密文前三個(gè)字符,將第一個(gè)字符和后兩個(gè)字符拆分并轉(zhuǎn)換為數(shù)值,分別得到密碼和加密算法標(biāo)識(shí)的長度Pl、El,并將密文的前三個(gè)字符移除,此時(shí)密文的長度Ml=Ml-3;

      43)定義一個(gè)空的字符串strhide,作為密碼和加密算法標(biāo)識(shí)的字符串;

      44)定義一個(gè)字符串緩存buffer,在密文的Pl位置處將密文分為前半段和后半段,將密文前半段放到buffer中;

      45)取buffer第二個(gè)字符的ASCII碼的十進(jìn)制值n除以密文長度Ml的余數(shù)k,取密文的位置k處的字符h,將h放入strhide前面,在密文的位置k處移除字符h,同時(shí)將buffer的第一個(gè)字符放到密文的位置k處;

      46)重復(fù)步步驟45),直至buffer只有一個(gè)字符,將該字符放到密文的前面,此時(shí)密文還原完畢;

      47)根據(jù)El將strhide拆分成密碼和加密算法標(biāo)識(shí)兩個(gè)部分;

      48)根據(jù)加密算法標(biāo)識(shí)到加密算法字典中取得加密算法,使用密碼和加密算法對(duì)密文進(jìn)行解密;

      49)輸出明文。

      作為優(yōu)選,所述步驟24)中,行為監(jiān)控模塊判斷是否存在窺探隱私的行為,具體判斷方法為:根據(jù)接口調(diào)用賬戶的上次提取隱私數(shù)據(jù)的時(shí)間和隱私數(shù)據(jù)相關(guān)的患者唯一標(biāo)識(shí)進(jìn)行判斷;如果在限定的時(shí)間間隔內(nèi)多次對(duì)同一患者的隱私數(shù)據(jù)多次提取,則不認(rèn)為是窺探隱私的行為;如果在限定時(shí)間間隔內(nèi),對(duì)多個(gè)患者提取隱私數(shù)據(jù),則認(rèn)為是隱私窺探行為。

      作為優(yōu)選,所述步驟26)中,行為監(jiān)控模塊進(jìn)行二次監(jiān)控,根據(jù)數(shù)據(jù)存取模塊返回的結(jié)果集判斷是否存在窺探隱私的行為,判斷的方法是:根據(jù)步驟25)的判斷結(jié)果查看是否查詢隱私數(shù)據(jù),同時(shí)判斷數(shù)據(jù)存取模塊是否返回多條記錄,如果涉及隱私數(shù)據(jù)同時(shí)返回多條記錄則判斷為窺探隱私的行為。

      本發(fā)明的有益效果在于:1、在醫(yī)院的各種應(yīng)用系統(tǒng)與數(shù)據(jù)庫的連接之間插入RESTful服務(wù)向外提供服務(wù)接口,由應(yīng)用系統(tǒng)直接存儲(chǔ)數(shù)據(jù)庫改為通過RESTful服務(wù)接口存取數(shù)據(jù),不僅應(yīng)用系統(tǒng)的開發(fā)語言不用更改,而且數(shù)據(jù)庫的架構(gòu)、模式均不用做任何調(diào)整,同時(shí)RESTful存取服務(wù)接口提供了SQL語句的支持,對(duì)應(yīng)用系統(tǒng)與數(shù)據(jù)庫交互的部分改動(dòng)非常小,對(duì)既有系統(tǒng)的改造成本非常低;2、本發(fā)明對(duì)患者隱私數(shù)據(jù)進(jìn)行二次監(jiān)控,在限制的時(shí)間間隔內(nèi)不允許多次提取患者的隱私數(shù)據(jù),既保證了醫(yī)務(wù)人員正常的診療工作又有效防止內(nèi)部工作人員惡意窺探、泄漏甚至出賣患者隱私數(shù)據(jù)的行為;3、提供一種對(duì)患者隱私數(shù)據(jù)的加密解密的算法,隨機(jī)選擇加密算法和動(dòng)態(tài)生成密碼的方法提高隱私數(shù)據(jù)的安全,而將密碼隱藏于密文中,減少對(duì)存儲(chǔ)空間的占用,同時(shí)為了提高安全,數(shù)據(jù)加密模塊和數(shù)據(jù)解密模塊用到的加密算法字典使用系統(tǒng)內(nèi)部的加密算法進(jìn)行加密,系統(tǒng)管理員不能看到加密算法字典的真正內(nèi)容,進(jìn)一步提高數(shù)據(jù)的安全。

      附圖說明

      圖1是本發(fā)明系統(tǒng)的結(jié)構(gòu)示意圖;

      圖2是本發(fā)明數(shù)據(jù)存儲(chǔ)處理步驟的流程示意圖;

      圖3是本發(fā)明數(shù)據(jù)提取處理步驟的流程示意圖;

      圖4是本發(fā)明加密步驟的流程示意圖。

      具體實(shí)施方式

      下面結(jié)合具體實(shí)施例對(duì)本發(fā)明進(jìn)行進(jìn)一步描述,但本發(fā)明的保護(hù)范圍并不僅限于此:

      一種面向醫(yī)療機(jī)構(gòu)的防止泄露患者隱私的系統(tǒng),如圖1所示,在應(yīng)用系統(tǒng)和數(shù)據(jù)庫之間插入服務(wù)接口,所述服務(wù)接口包括:存取服務(wù)模塊、SQL語句分解模塊、數(shù)據(jù)庫元數(shù)據(jù)管理模塊、行為監(jiān)控模塊、數(shù)據(jù)模擬模塊、數(shù)據(jù)加密模塊、數(shù)據(jù)解密模塊、數(shù)據(jù)存儲(chǔ)模塊;所述存取服務(wù)模塊與SQL語句分解模塊連接,SQL語句分解模塊與數(shù)據(jù)庫元數(shù)據(jù)管理模塊、行為監(jiān)控模塊連接,行為監(jiān)控模塊與數(shù)據(jù)模擬模塊、數(shù)據(jù)存取模塊連接,數(shù)據(jù)存取模塊與數(shù)據(jù)加密模塊、數(shù)據(jù)解密模塊連接;所述存取服務(wù)模塊用于提取SQL語句發(fā)送給SQL語句分解模塊,SQL語句分解模塊將分解提取的數(shù)據(jù)發(fā)送給數(shù)據(jù)庫元數(shù)據(jù)管理模塊,數(shù)據(jù)庫元數(shù)據(jù)管理模塊對(duì)數(shù)據(jù)進(jìn)行判斷處理并進(jìn)行一次行為監(jiān)測(cè),行為監(jiān)控模塊用于進(jìn)行二次行為監(jiān)測(cè),數(shù)據(jù)模擬模塊模擬產(chǎn)生偽信息,數(shù)據(jù)加密模塊和數(shù)據(jù)解密模塊用于對(duì)患者隱私數(shù)據(jù)的加密和解密,數(shù)據(jù)存取模塊用于對(duì)數(shù)據(jù)庫的存取操作。所述存取服務(wù)模塊以RESTful服務(wù)的形式對(duì)外提供數(shù)據(jù)存儲(chǔ)接口和數(shù)據(jù)提取接口,數(shù)據(jù)存儲(chǔ)接口和數(shù)據(jù)提取接口與應(yīng)用系統(tǒng)連接。

      一種面向醫(yī)療機(jī)構(gòu)的防止泄露患者隱私的方法,包括,數(shù)據(jù)存儲(chǔ)處理步驟、數(shù)據(jù)提取處理步驟。

      圖如2所示,數(shù)據(jù)存儲(chǔ)處理包括以下步驟:

      步驟一、接口調(diào)用者調(diào)用存取服務(wù)模塊的數(shù)據(jù)存儲(chǔ)接口時(shí),將使用的SQL語句傳入接口的第一個(gè)參數(shù),第二個(gè)參數(shù)為可選參數(shù),用于傳入SQL語句的綁定參數(shù)或存儲(chǔ)過程/函數(shù)的參數(shù)值,存取服務(wù)模塊的數(shù)據(jù)存儲(chǔ)接口提取SQL語句,發(fā)給SQL語句分解模塊;

      步驟二、SQL語句分解模塊,分解SQL語句,提取DML的“insert”、“update”、“delete”關(guān)鍵字、涉及的表名和相關(guān)字段,如果沒有“insert”、“update”、“delete”關(guān)鍵字,則檢查是否存在形如“execute”、“call”等調(diào)用自定義的存儲(chǔ)過程或函數(shù)的關(guān)鍵字,將自定義的存儲(chǔ)過程或函數(shù)名提取出來,將提取的信息發(fā)給數(shù)據(jù)庫元數(shù)據(jù)管理模塊,執(zhí)行步驟三;

      步驟三、數(shù)據(jù)庫元數(shù)據(jù)管理模塊根據(jù)SQL語句的關(guān)鍵字或調(diào)用的自定義存儲(chǔ)過程或函數(shù)判斷是否存在數(shù)據(jù)提取的行為,如果存在數(shù)據(jù)提取的行為,則認(rèn)為接口調(diào)用錯(cuò)誤并返回錯(cuò)誤信息,然后判斷是否存在對(duì)隱私數(shù)據(jù)的操作,如果涉及隱私數(shù)據(jù)的操作則執(zhí)行步驟四,否則執(zhí)行步驟五;

      步驟四、數(shù)據(jù)加密模塊對(duì)傳入的隱私數(shù)據(jù)進(jìn)行加密,如果SQL語句或其綁定的參數(shù)中含有隱私數(shù)據(jù),則將隱私數(shù)據(jù)進(jìn)行加密,如果調(diào)用的是存儲(chǔ)過程或函數(shù),則對(duì)涉及隱私的參數(shù)值進(jìn)行加密,執(zhí)行步驟五。

      步驟五、數(shù)據(jù)存儲(chǔ)模塊直接將SQL語句或存儲(chǔ)過程或函數(shù)傳入數(shù)據(jù)庫,完成數(shù)據(jù)存儲(chǔ),并將存儲(chǔ)結(jié)果反饋給存取服務(wù)模塊的調(diào)用者。

      如圖3所示,數(shù)據(jù)提取處理步驟包括以下步驟:

      步驟一、接口調(diào)用者調(diào)用存取服務(wù)模塊的數(shù)據(jù)提取接口時(shí),將使用的SQL語句傳入接口的第一個(gè)參數(shù),第二個(gè)參數(shù)為可選參數(shù),用于傳入SQL語句的綁定參數(shù)或存儲(chǔ)過程/函數(shù)的參數(shù)值,存取服務(wù)模塊的數(shù)據(jù)提取接口提取SQL語句,發(fā)給SQL語句分解模塊;

      步驟二、SQL語句分解模塊,分解SQL語句,提取DML的“select”關(guān)鍵字、涉及的表名和相關(guān)字段,如果沒有“select”關(guān)鍵字,則檢查是否存在形如“execute”、“call”等調(diào)用自定義的存儲(chǔ)過程或函數(shù)的關(guān)鍵字,將自定義的存儲(chǔ)過程或函數(shù)名提取出來,將提取的信息發(fā)給數(shù)據(jù)庫元數(shù)據(jù)管理模塊,執(zhí)行步驟三;

      步驟三、數(shù)據(jù)庫元數(shù)據(jù)管理模塊根據(jù)表名和相關(guān)的表和字段或自定義的存儲(chǔ)過程/函數(shù)判斷是否存在通過數(shù)據(jù)提取接口對(duì)數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行增加、刪除、修改的行為(針對(duì)臨時(shí)表的操作除外),如果存在,則返回錯(cuò)誤信息,否則判斷是否存在對(duì)隱私數(shù)據(jù)的提取,如果涉及隱私數(shù)據(jù)的提取操作則執(zhí)行步驟四,否則執(zhí)行步驟五;

      步驟四,行為監(jiān)控模塊,判斷是否存在窺探隱私的行為,判斷的方法是根據(jù)接口調(diào)用賬戶的上次提取隱私數(shù)據(jù)的時(shí)間和隱私數(shù)據(jù)相關(guān)聯(lián)的患者唯一標(biāo)識(shí)進(jìn)行判斷,如果在限定的時(shí)間間隔內(nèi)多次對(duì)同一患者的隱私數(shù)據(jù)多次提取,則不認(rèn)為是窺探隱私的行為,執(zhí)行步驟五,如果在限定時(shí)間間隔內(nèi),提取不同患者的隱私數(shù)據(jù),則認(rèn)為是隱私窺探行為,調(diào)用數(shù)據(jù)模擬模塊,返回模擬數(shù)據(jù);

      步驟五、數(shù)據(jù)存取模塊將請(qǐng)求的SQL語句提交數(shù)據(jù)庫,返回結(jié)果集,如果數(shù)據(jù)庫執(zhí)行異常則將異常信息反饋給接口調(diào)用者;

      步驟六、行為監(jiān)控模塊根據(jù)數(shù)據(jù)存取模塊返回的結(jié)果集判斷是否存在窺探隱私的行為,判斷的方法是根據(jù)步驟三的判斷結(jié)果查看是否查詢隱私數(shù)據(jù),同時(shí)判斷數(shù)據(jù)存取模塊是否返回多條記錄,如果返回多條患者的隱私記錄則判斷為窺探隱私的行為,調(diào)用數(shù)據(jù)模擬模塊,返回模擬數(shù)據(jù),否則,調(diào)用數(shù)據(jù)解密模塊解密隱私數(shù)據(jù)并返回?cái)?shù)據(jù),并記錄接口調(diào)用賬戶的信息和操作的時(shí)間以及涉及患者的唯一標(biāo)識(shí)(如存放隱私數(shù)據(jù)表的主鍵、患者的身份證號(hào)、就診卡號(hào)、醫(yī)保號(hào)等)。

      加密算法字典至少維護(hù)兩條以上加密算法和其對(duì)應(yīng)的密鑰長度要求,當(dāng)隱私保護(hù)系統(tǒng)開始加載運(yùn)行時(shí),先判斷加密算法字典自身是否已經(jīng)加密,如果沒有加密則系統(tǒng)為每個(gè)加密算法隨機(jī)生成各自的加密標(biāo)識(shí),每個(gè)加密標(biāo)識(shí)為各不相同的字符串,字符串的長度不必相等。隨后,系統(tǒng)使用內(nèi)部的加密算法將加密算法字典加密后,覆蓋掉初始的加密算法字典明文。

      如圖4所示,數(shù)據(jù)加密模塊的加密步驟包括:

      步驟一、輸入待加密的明文,假設(shè)患者的姓名為abc,對(duì)明文abc進(jìn)行加密;

      步驟二、在加密算法字典中隨機(jī)選擇一種加密算法和其對(duì)應(yīng)的加密算法標(biāo)識(shí),并用內(nèi)部的加密算法解密,得到加密算法和其對(duì)應(yīng)的加密算法標(biāo)識(shí),假設(shè)得到的加密算法為DES算法,其對(duì)應(yīng)的標(biāo)識(shí)符為Ep,它的長度El=2,要求的密鑰長度為64位(bit);

      步驟三、隨機(jī)生成一個(gè)符合加密算法密鑰長度要求的字符串,假設(shè)該字符串為12345678,使用步驟二隨機(jī)選擇的加密算法,對(duì)明文進(jìn)行加密,得到密文為:LINpMRouOPo=,它的長度Ml=12;

      步驟四、加密算法標(biāo)識(shí)和密碼字符串進(jìn)行拼接,生成待隱藏的字符串strhide=12345678Ep,并記錄strhide的長度為Pl=10;

      步驟五、設(shè)置一個(gè)字符串buffer,將密文第一個(gè)字符,即L遷移到buffer的最前面,此時(shí)密文為:INpMRouOPo=,它的長度為11;

      步驟六、取buffer的第一個(gè)字符ASCII碼的十進(jìn)制值除以密文長度11的余數(shù)為10;

      步驟七、將密文的位置10(位置的編號(hào)從0開始)處的字符遷移到buffer的最前面;

      步驟八、在密文的位置10處插入strhide的第一個(gè)字符1,得到INpMRouOPo1,將strhide的第一個(gè)字符1移除,結(jié)果是2345678;

      步驟九、重復(fù)步驟六至步驟八,直至strhide中的字符全部移除,此時(shí)密文的內(nèi)容為:

      8N57Ro2p6o1,buffer的內(nèi)容為:E3IMP4pOu=L,將buffer的內(nèi)容放到密文內(nèi)容的前面,結(jié)果:E3IMP4pOu=L8N57Ro2p6o1;

      步驟十、將Pl轉(zhuǎn)化為兩位字符長度的字符串,不足兩位的前面補(bǔ)0,放在密文的首部,將El轉(zhuǎn)換為1位字符長度的字符串,放在密文的首部;

      步驟十一、輸出密文:210E3IMP4pOu=L8N57Ro2p6o1。

      相反的,數(shù)據(jù)解密模塊的解密步驟包括:

      步驟一、輸入密文210E3IMP4pOu=L8N57Ro2p6o1;

      步驟二、截取密文前三個(gè)字符,將第一個(gè)字符和后兩個(gè)字符的字符串分別轉(zhuǎn)換為數(shù)值,得到隱藏的字符串長度為10以及其中加密算法標(biāo)識(shí)長度為2,并將密文的前三個(gè)字符移除,此時(shí)密文的內(nèi)容為E3IMP4pOu=L8N57Ro2p6o1,長度為22;

      步驟三、將密文內(nèi)容從位置10處(位置的編號(hào)從0開始)拆成兩個(gè)部分:E3IMP4pOu=L以及8N57Ro2p6o1,將第一部分的內(nèi)容放到緩存字符buffer中。此時(shí)密文的內(nèi)容為:8N57Ro2p6o1,buffer的內(nèi)容為:E3IMP4pOu=L;

      步驟四、定義一個(gè)空的字符串strhide,作為密碼和加密算法標(biāo)識(shí)的字符串;

      步驟五、取buffer字符串的第二個(gè)字符(3)的ASCII碼的十進(jìn)制值(51)密文長度(11)的余數(shù)(7),將余數(shù)所指定的密文位置(7)處的字符轉(zhuǎn)移到strhide的字符串前面,并在該位置插入buffer的第一個(gè)字符,同時(shí)將buffer的第一個(gè)字符刪除;

      步驟六、重復(fù)步驟五,直至buffer只剩下一個(gè)字符,將該字符放到密文的前面,得到原始密文:LINpMRouOPo=;

      步驟七、加密算法標(biāo)識(shí)長度為2將strhide拆分成密碼(12345678)和加密算法標(biāo)識(shí)(Ep)兩個(gè)部分;

      步驟八、根據(jù)加密算法標(biāo)識(shí)到加密算法字典中取得加密算法(DES),使用密碼和加密算法對(duì)密文進(jìn)行解密得到明文為abc。

      以上的所述乃是本發(fā)明的具體實(shí)施例及所運(yùn)用的技術(shù)原理,若依本發(fā)明的構(gòu)想所作的改變,其所產(chǎn)生的功能作用仍未超出說明書及附圖所涵蓋的精神時(shí),仍應(yīng)屬本發(fā)明的保護(hù)范圍。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1