guofei9987 / text_blind_watermark

文本盲水印:把信息隐匿到文本中,put invisible blind watermark into a text.
https://www.guofei.site/pictures_for_blog/app/text_watermark/v1.html
MIT License
1.39k stars 137 forks source link

咨询一下工作原理 #6

Closed rovesoul closed 1 week ago

rovesoul commented 7 months ago

这是什么原理实现的

Rgoogle commented 3 months ago

image text_blind_watermark 项目确实是通过修改某些指定的字符来嵌入水印信息。具体来说,它会在文本中添加一些不可见的字符(如零宽度空格或零宽度非连接符),这些字符在视觉上不会改变文本的外观,但会改变底层的二进制表示。

工作原理 选择嵌入位置:根据特定算法选择文本中的某些位置,这些位置可以是字符、单词或句子。 嵌入水印信息:在选定的位置上添加不可见字符(如零宽度空格 \u200B 或零宽度非连接符 \u200C)。这些字符在视觉上不可见,但会改变文本的二进制表示。 提取水印信息:通过检测这些不可见字符的位置,提取出嵌入的二进制数据,并将其转换回原始的水印信息。 示例代码 以下是一个简单的 Python 示例,展示如何将水印嵌入到文本中并提取出来:

Python

def text_to_binary(text): return ''.join(format(ord(char), '08b') for char in text)

def binary_to_text(binary): chars = [binary[i:i+8] for i in range(0, len(binary), 8)] return ''.join(chr(int(char, 2)) for char in chars)

def embed_watermark(text, watermark): binary_watermark = text_to_binary(watermark) words = text.split() for i in range(len(binary_watermark)): if i < len(words): words[i] += '\u200B' if binary_watermark[i] == '1' else '\u200C' return ' '.join(words)

def extract_watermark(text): words = text.split() binary_watermark = ''.join('1' if '\u200B' in word else '0' for word in words) return binary_to_text(binary_watermark)

示例

original_text = '这句话中有盲水印,你能提取出来吗?' watermark = 'ABC123'

嵌入水印

text_with_watermark = embed_watermark(original_text, watermark) print("嵌入水印后的文本:", text_with_watermark)

提取水印

extracted_watermark = extract_watermark(text_with_watermark) print("提取的水印内容:", extracted_watermark) AI-generated code. Review and use carefully. More info on FAQ. 这个示例展示了如何将水印信息转换为二进制,并嵌入到文本中。提取时,通过检测零宽度空格的位置,恢复原始的水印信息。

new bing 给的

rovesoul commented 3 months ago

您的来信已经收到,谢谢。待我尽快上线处理。                                                                                    ——董汇标

ytfrdfiw commented 2 months ago

感谢分享这么好的项目。

rovesoul commented 2 months ago

您的来信已经收到,谢谢。待我尽快上线处理。                                                                                    ——董汇标

rovesoul commented 1 week ago

您的来信已经收到,谢谢。待我尽快上线处理。                                                                                    ——董汇标

ytfrdfiw commented 1 week ago

你好,能否花钱购买?

@.***

发件人: 郭飞 发送时间: 2024-10-19 11:35 收件人: guofei9987/text_blind_watermark 抄送: ytfrdfiw; Comment 主题: Re: [guofei9987/text_blind_watermark] 咨询一下工作原理 (Issue #6) Closed #6 as completed. — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>