Crates.io | text-blind-watermark |
lib.rs | text-blind-watermark |
version | 0.1.5 |
source | src |
created_at | 2024-01-08 08:30:01.343329 |
updated_at | 2024-01-30 09:10:00.713206 |
description | Text Blind Watermark in Rust |
homepage | |
repository | |
max_upload_size | |
id | 1092298 |
size | 17,009 |
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.
Video demo:https://www.bilibili.com/video/BV1m3411s7kT
Online demo(from old version, for demo only): https://www.guofei.site/pictures_for_blog/app/text_watermark/v1.html
Python version: https://github.com/guofei9987/text_blind_watermark
Source code: https://github.com/guofei9987/text-blind-watermark
Can be used in
Cargo.toml
[dependencies]
text-blind-watermark = "*"
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()))
}
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