text-blind-watermark

Text Blind Watermark in Rust

6 releases

0.1.5 Jan 30, 2024
0.1.4 Jan 29, 2024

#468 in Cryptography


Used in wm_add1

MIT license

12KB
174 lines

text-blind-watermark

Text Blind Watermark in Rust

Put message(blind watermark) into a text. so that the message is invisible, and the changes of the text are not perceptible.

stars fork

Can be used in

  • Wechat
  • dingding
  • zhihu.com
  • ...

How to Use

Cargo.toml

[dependencies]
text-blind-watermark = "*"

embed&extract:

use text_blind_watermark::TextBlindWM;

fn test2() {
    let pwd = "这是一段密码. This is password";
    let wm = "不可见的暗水印. This is watermark";
    let text = "这是一段文本,之后这段文本将会被嵌入不可见盲水印";

    let text_blind_watermark = TextBlindWM::new(pwd);

    // embed
    let text_with_wm = text_blind_watermark.embed(text, wm);
    println!("text with watermark:{}", text_with_wm);

    // extract
    let wm_extract = text_blind_watermark.extract(text_with_wm.as_str());

    println!("watermark extracted:{}", String::from_utf8_lossy(wm_extract.as_slice()))
}

embed&extract .txt file:

fn test3() {
    let pwd = "这是一段密码. This is password";
    let wm = "不可见的暗水印. This is watermark";
    let ori_filename = "file.txt";
    let file_with_wm = "file_with_wm.txt";


    let text_blind_watermark = TextBlindWM::new(pwd);

    let text = std::fs::read_to_string(ori_filename).unwrap();

    // embed
    let text_with_wm = text_blind_watermark.embed(text.as_str(), wm);
    // write into file
    fs::write(file_with_wm, text_with_wm).unwrap();
    println!("text with watermark saved in file <{}>", file_with_wm);

    // read text and extract the watermark
    let text_with_wm = fs::read_to_string(file_with_wm).unwrap();

    // extract
    let wm_extract = text_blind_watermark.extract(text_with_wm.as_str());

    println!("watermark extracted:{}", String::from_utf8_lossy(wm_extract.as_slice()))
}

It does not display well in IDE. Use other text editor or text viewer.

HideInfo:https://github.com/guofei9987/HideInfo

算法 说明
migrate tank 使图片在不同的背景下显示不同的图片
hide as image 把数据以图片形式存放
hide in image 把数据藏在一个图片中
image seed 把图片和文件黏在一起,并存为图片
EXIF 把一段信息放到图片的EXIF中
hide as music 把数据以音频的形式存放
hide in music 把数据隐藏在一个音频中
hide as text 把数据以文本文件的形式存放
hide in text 把数据隐藏在一段文本中

Python version: https://github.com/guofei9987/text_blind_watermark

Dependencies

~315KB