專案簡介
文字隱水印,用來把一段資訊嵌入到一段明文中,使資訊隱密不可見,並且旁人無法察覺到嵌入後明文的變化。
經測試,在這些場景下資訊隱藏比較完美
- MacBook 版本的 Chrome 瀏覽器,包括知乎網頁版、微博網頁版等。
- 微信、釘釘。Mac/Iphone 版均可
- 蘋果備忘錄
- 用 Chrome 開啟 github.com 上的程式碼檔案和文字檔案(但md檔案不行)
- 用複製/黏貼 (ctrl+c/v) 的方式在上述平臺之間黏貼
- 歡迎補充
不太行的
- Safari 瀏覽器
線上演示(舊版演算法,僅用於展示效果): https://www.guofei.site/pictures_for_blog/app/text_watermark/v1.html
影片展示:https://www.bilibili.com/video/BV1m3411s7kT
如何使用
安裝
>pip install text_blind_watermark
把資訊不可見地嵌入到文字中
from text_blind_watermark import TextBlindWatermark2
password = '20190808'
text = '這句話中有盲水印,你能提取出來嗎?'
watermark = 'github.com/guofei9987'
text_blind_wm = TextBlindWatermark2(password=password)
text_with_wm = text_blind_wm.embed(text=text, watermark=watermark)
print(text_with_wm)
從文字中提取不可見的資訊
text_blind_wm2 = TextBlindWatermark2(password=password)
wm_extract = text_blind_wm2.extract(text_with_wm)
print('提取內容:', wm_extract)
**chr_type**
可以指定 chr_type
使其在不同的系統環境中有更好的表現
from text_blind_watermark import TextBlindWatermark2
password = '20190808'
text = '這句話中有盲水印,你能提取出來嗎?'
watermark = 'github.com/guofei9987'
text_blind_wm = TextBlindWatermark2(password=password, chr_type=(3, 4))
text_with_wm = text_blind_wm.embed(text=text, watermark=watermark)
print(text_with_wm)
text_blind_wm2 = TextBlindWatermark2(password=password, chr_type=(3, 4))
wm_extract = text_blind_wm2.extract(text_with_wm)
print('提取內容:', wm_extract)
assert watermark == wm_extract
更穩定的版本
張三:把隱秘訊息嵌入到另一段文字中
from text_blind_watermark import TextBlindWatermark
watermark = "絕密:兩點老地方見!"
text = "這句話中有盲水印,你能提取出來嗎?" * 16
password = "20190808"
twm = TextBlindWatermark(password=password)
twm.read_wm(watermark=watermark)
twm.read_text(text=text)
text_embed = twm.embed()
print("打上盲水印之後:")
print(text_embed)
顯示的明文可以貼上到任何地方
It uses AES to encrypt
李四:拿到明文,解出暗文
from text_blind_watermark import TextBlindWatermark
password = "20190808"
twm_new = TextBlindWatermark(password=password)
wm_extract = twm_new.extract(text_embed)
print("解出的盲水印:")
print(wm_extract)
專案連結
https://github.com/guofei9987/text_blind_watermark