text_blind_watermark%3A 給文字加隱水印

luckzack發表於2024-05-07

專案簡介

文字隱水印,用來把一段資訊嵌入到一段明文中,使資訊隱密不可見,並且旁人無法察覺到嵌入後明文的變化。
經測試,在這些場景下資訊隱藏比較完美

  • 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

相關文章