本發(fā)明涉及數(shù)字水印技術領域,尤其涉及一種數(shù)字可見水印的添加方法及系統(tǒng)。
背景技術:
計算機的數(shù)字化存儲為信息傳遞提供了極大的便利性,并且提高了信息傳遞的效率和準確性。但隨之而來的副作用是這些數(shù)字形式的數(shù)據(jù)文件在流轉過程中安全性得不到任何保障,很容易通過屏幕拍照、截屏等方式進行信息的泄密。
數(shù)字可見水印通過監(jiān)視器屏幕顯示出來,它可以是一個電子圖章圖像或一行說明文本。可見水印在作品/數(shù)據(jù)(如圖像或視頻)上產(chǎn)生可見的改變,但這種改變并不嚴重破壞宿主數(shù)據(jù)的內容,宿主數(shù)據(jù)的視覺真實度并無顯著下降??梢娝∮心康牡厥顾度氲乃⌒畔橛^察者所見,因此特別適合于標識版權,用于防止或阻止非法使用受版權保護的高質量圖像。
如公開號為CN 103581769 A的中國專利,提出了一種用戶裝置,所述用戶裝置包括處理器,所述處理器被配置來:接收內容數(shù)據(jù)流;使用多個參數(shù)來產(chǎn)生水印有效負荷,所述參數(shù)包括用于表征所述內容數(shù)據(jù)流的來源的至少一個值和用戶信息;向所述內容數(shù)據(jù)流插入包括所述水印有效負荷的水印,以獲得加水印的內容數(shù)據(jù)流;并且,輸出所述加水印的內容數(shù)據(jù)流。
上述方法將水印添加至內容數(shù)據(jù)流,從而對應的顯示裝置進行顯示時能夠將水印和內容一起顯示。但是該方案內容數(shù)據(jù)流發(fā)生改變,兼容性差。
技術實現(xiàn)要素:
本發(fā)明所要解決的技術問題是:提供一種數(shù)字可見水印的添加方法,能夠在不影響原數(shù)據(jù)流的情況下,添加數(shù)字可見水印。
為了解決上述技術問題,本發(fā)明采用的技術方案為:
一種數(shù)字可見水印的添加方法,包括:
關聯(lián)進程及與所述進程對應的水印信息;
檢測到需要配置水印的進程啟動時,獲取所述需要配置水印的進程的主窗口;
創(chuàng)建覆蓋在所述主窗口之上的透明窗口;
依據(jù)所述需要配置水印的進程對應的水印信息在所述透明窗口上繪制水印。
本發(fā)明提供的另一個技術方案為:
一種數(shù)字可見水印的添加系統(tǒng),包括:
水印配置器,用于關聯(lián)進程及與所述進程對應的水印信息;
進程主窗口獲取器,用于檢測到需要配置水印的進程啟動時,獲取所述需要配置水印的進程的主窗口;
水印窗口生成器,用于創(chuàng)建覆蓋在所述主窗口之上的透明窗口;
水印繪制器,用于依據(jù)所述需要配置水印的進程對應的水印信息在所述透明窗口上繪制水印。
本發(fā)明的有益效果在于:通過在需要配置水印的進程的主窗口上設置透明窗口,然后在透明窗口上繪制的水印,從而實現(xiàn)為進程添加水印的目的,相較于添加在數(shù)據(jù)內部的不可見水印,更具有約束力,有效保障數(shù)據(jù)流轉的安全型,做到事先預防,事后有據(jù)可查。另外,在自創(chuàng)建的透明窗口上繪制水印,穩(wěn)定性和兼容性更高,支持所有的具有窗口的進程,通用性強。
附圖說明
圖1為本發(fā)明實施例的數(shù)字可見水印的添加方法的流程圖;
圖2為本發(fā)明實施例的數(shù)字可見水印的添加系統(tǒng)的結構示意圖;
圖3為本發(fā)明實施例一的數(shù)字可見水印的添加方法的流程圖;
圖4為本發(fā)明實施例二的數(shù)字可見水印的添加系統(tǒng)的結構示意圖。
標號說明:
1、水印配置器;2、進程主窗口獲取器;3、水印窗口生成器;4、水印繪制器;5、窗口消息監(jiān)視器;6、水印窗口控制器;7、水印消除器;8、結束器。
具體實施方式
為詳細說明本發(fā)明的技術內容、所實現(xiàn)目的及效果,以下結合實施方式并配合附圖予以說明。
本發(fā)明最關鍵的構思在于:在進程的主窗口上繪制透明窗口,在透明窗口上繪制水印。
請參照圖1,本發(fā)明提供:
一種數(shù)字可見水印的添加方法,包括:
關聯(lián)進程及與所述進程對應的水印信息;
檢測到需要配置水印的進程啟動時,獲取所述需要配置水印的進程的主窗口;
創(chuàng)建覆蓋在所述主窗口之上的透明窗口;
依據(jù)所述需要配置水印的進程對應的水印信息在所述透明窗口上繪制水印。
進一步的,所述透明窗口的大小及位置與所述主窗口的大小及位置一致。
從上述描述可知,透明窗口是完全覆蓋于主窗口之上的,因此水印最終可以顯示在主窗口的任意位置,并且可以任意繪制多個的水印,具有較高的靈活性和通用性。當然,也可以只對應主窗口的某個位置創(chuàng)建透明窗口,如右上角等。
進一步的,依據(jù)所述需要配置水印的進程對應的水印信息在所述透明窗口上繪制水印之后,進一步包括:
監(jiān)測所述主窗口的窗口消息;
若監(jiān)測到所述主窗口進行操作,則控制所述透明窗口進行與所述主窗口相同的操作;所述操作的包括:改變窗口的大小、改變窗口的位置、最大化、最小化和激活中的至少一種。
從上述描述可知,由于用戶在使用進程或者進程正在進行時,可能主窗口會進行一系列操作,如主窗口最小化,而透明窗口與主窗口大小位置一致,如果透明窗口維持先前狀態(tài)不變,則會出現(xiàn)異常顯示,因此需要控制透明窗口和主窗口進行同步操作。
進一步的,采用消息鉤子監(jiān)測所述主窗口的窗口消息。
從上述描述可知,通過安裝消息鉤子WH_CALLWNDPROCRET能夠有效截獲主窗口的所有窗口消息,如截獲的窗口消息WM_MOVE表示窗口移動,WM_SIZE表示改變窗口大小,窗口消息WM_SYSCOMMAND可以再區(qū)分最大化(SC_MAXIMIZE)或最小化(SC_MINIMIZE)消息,窗口消息WM_ACTIVATE表示激活。
進一步的,依據(jù)所述需要配置水印的進程對應的水印信息在所述透明窗口上繪制水印之后,進一步包括:
所述需要配置水印的進程關閉時或接收到關閉水印的指令時,關閉所述透明窗口。
從上述描述可知,通過關閉透明窗口實現(xiàn)消除水印。具體的,接收到關閉水印指令,則銷毀各個有水印進程里的透明窗口;而關閉水印進程,只是銷毀本進程的水印窗口。
進一步的,檢測到需要配置水印的進程啟動時,獲取所述需要配置水印的進程的主窗口之后,創(chuàng)建覆蓋在所述主窗口之上的透明窗口之前,進一步包括:
若獲取所述主窗口失敗,則結束添加水??;
若獲取所述主窗口成功,則繼續(xù)創(chuàng)建覆蓋在所述主窗口之上的透明窗口。
從上述描述可知,由于主窗口是指進程里父窗口為空且窗口屬性為可見的窗口,并不是所有進程都有主窗口,當某個進程配置為需要添加水印,卻沒有主窗口時,通過上述步驟即可結束添加水印的操作,防止因水印添加異常造成的進程運行異常等問題。
請參照圖2,本發(fā)明的另一個技術方案為:
一種對應上述數(shù)字可見水印的添加方法的系統(tǒng),其特征在于,包括:
水印配置器1,用于關聯(lián)進程及與所述進程對應的水印信息;
進程主窗口獲取器2,用于檢測到需要配置水印的進程啟動時,獲取所述需要配置水印的進程的主窗口;
水印窗口生成器3,用于創(chuàng)建覆蓋在所述主窗口之上的透明窗口;
水印繪制器4,用于依據(jù)所述需要配置水印的進程對應的水印信息在所述透明窗口上繪制水印。
進一步的,所述透明窗口的大小及位置與所述主窗口的大小及位置一致,所述數(shù)字可見水印的添加系統(tǒng)還包括:
窗口消息監(jiān)視器5,用于監(jiān)測所述主窗口的窗口消息;
水印窗口控制器6,用于若監(jiān)測到所述主窗口進行操作,則控制所述透明窗口進行與所述主窗口相同的操作;所述操作的包括:改變窗口的大小、改變窗口的位置、最大化、最小化和激活中的至少一種。
進一步的,還包括:
水印消除器7,用于所述需要配置水印的進程關閉時或接收到關閉水印的指令時,關閉所述透明窗口。
進一步的,還包括:
結束器8,用于若獲取所述主窗口失敗,則結束添加水??;
若獲取所述主窗口成功,則進入所述水印窗口生成器3。
請參照圖3,本發(fā)明的實施例一為:
一種數(shù)字可見水印的添加方法,包括:
S1:配置需要添加的水印的進程名和水印信息;所述水印信息包括數(shù)字水印信息以及圖片水印信息,數(shù)字水印信息包括:文字內容、文字大小、字體、傾斜度、顏色、透明度和間距,圖片水印信息包括:圖片大小、顏色、傾斜度、透明度、間距、拉伸模式;
S2:關聯(lián)所述進程名和對應的水印信息;
S3:檢測到需要配置水印的進程啟動時,獲取所述需要配置水印的進程的主窗口;所述主窗口為所述需要配置水印的進程里父窗口為空并且窗口屬性為可見的窗口;如果獲取到多個主窗口,就保存多個主窗口到鏈表中;在WINDOWS操作系統(tǒng)下,可以采用調用函數(shù)SetWindowsHookEx方式安裝全局鉤子的方式注入到進程中,然后根據(jù)進程名和進程描述可以判斷該進程是否需要添加水??;可以采用枚舉所有窗口的方式,枚舉到父窗口為空并且窗口屬性是可見的,作為進程的主窗口保存到鏈表之中;
S4:若獲取所述主窗口失敗,則結束添加水??;若獲取所述主窗口成功,則進入S5;
S5:創(chuàng)建覆蓋在所述主窗口之上的鼠標可穿透、且大小和位置與所示主窗口相同的透明窗口;在WINDOWS操作系統(tǒng)下,可以使用CreateWindowsEx函數(shù)創(chuàng)建窗口,把窗口的屬性設置成全透明的、鼠標穿透的模式,并且一直覆蓋在原主窗口之上,這樣我們就成功的在主窗口上創(chuàng)建了一個透明層窗口,如果不在上面繪制水印,用戶是感覺不到主窗口有任何異樣;
S6:依據(jù)所述需要配置水印的進程對應的水印信息在所述透明窗口上繪制水??;在WINDOWS操作系統(tǒng)下,可以采用共享內存的方式,將文字水印的文字內容、文字大小、字體、傾斜度、顏色、透明度、間距,圖片水印的圖片大小、顏色、傾斜度、透明度、間距、拉伸模式這些信息讀取到共享內存之中??梢哉{用WINDOWS下的GDI繪圖函數(shù),把文字或者圖片繪制到窗口上,根據(jù)水印文字或圖片的大小和間距把水印內容平鋪到所述的透明鼠標可穿透的窗口之上;
S7:監(jiān)測所述主窗口的窗口消息;若監(jiān)測到所述主窗口進行操作,則控制所述透明窗口進行與所述主窗口相同的操作;所述操作的包括:改變窗口的大小、改變窗口的位置、最大化、最小化和激活中的至少一種;在WINDOWS操作系統(tǒng)下,可以采用安裝消息鉤子WH_CALLWNDPROCRET,來截獲原主窗口的所有窗口消息;其中截獲的窗口消息WM_MOVE表示窗口移動,WM_SIZE表示改變窗口大小,窗口消息WM_SYSCOMMAND可以再區(qū)分最大化(SC_MAXIMIZE)或最小化(SC_MINIMIZE)消息,窗口消息WM_ACTIVATE表示激活;
S8:接收到關閉水印指令,則銷毀各個有水印進程里的透明窗口;關閉水印進程時,銷毀本進程的透明窗口。該關閉水印指令由具有權限的人員發(fā)送,如系統(tǒng)管理員;
下面是本發(fā)明的一個具體應用場景:
某機關單位里的計算機的網(wǎng)絡是隔離的,并且USB等外接端口也是不可用的,但是內部一些機密的電子文件,如word文檔,可以通過用office工具打開,然后通過手機拍照泄露出去。采用上述實施例一的方案,可以在計算機打開word文件的窗口上配置一個半透明的水印,水印的內容可以根據(jù)配置(如計算機名、IP、MAC等),這樣一來用戶就不敢隨意拍照引起文件內容泄露,就算泄露了,由于照片上含有水印信息,也可以查出是在哪一臺計算機上泄露出去的。
請參照圖4,本發(fā)明的實施例二為:
一種與上述實施例一的數(shù)字可見水印的添加方法對應的系統(tǒng),包括:
水印配置器1,用于關聯(lián)進程及與所述進程對應的水印信息;
進程主窗口獲取器2,用于檢測到需要配置水印的進程啟動時,獲取所述需要配置水印的進程的主窗口;
結束器8,用于若獲取所述主窗口失敗,則結束添加水?。?/p>
若獲取所述主窗口成功,則進入所述水印窗口生成器3。
水印窗口生成器3,用于創(chuàng)建覆蓋在所述主窗口之上的鼠標可穿透的透明窗口;所述透明窗口的大小及位置與所述主窗口的大小及位置一致;
水印繪制器4,用于依據(jù)所述需要配置水印的進程對應的水印信息在所述透明窗口上繪制水印;
窗口消息監(jiān)視器5,用于監(jiān)測所述主窗口的窗口消息;
水印窗口控制器6,用于若監(jiān)測到所述主窗口進行操作,則控制所述透明窗口進行與所述主窗口相同的操作;所述操作的包括:改變窗口的大小、改變窗口的位置、最大化、最小化和激活中的至少一種。
水印消除器7,用于所述需要配置水印的進程關閉時或接收到關閉水印的指令時,關閉所述透明窗口。
綜上所述,本發(fā)明提供的數(shù)字可見水印的添加方法及系統(tǒng),能夠對需要配置的進程添加可見水印,有效保障數(shù)據(jù)流轉的安全性,并且具有很強的穩(wěn)定性和兼容性,支持所有的有窗口的進程,通用性強。
以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內容所作的等同變換,或直接或間接運用在相關的技術領域,均同理包括在本發(fā)明的專利保護范圍內。