最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 零宽字符文本水印原理

    正文概述 掘金(lceric)   2021-01-19   631

    最近看到word-wrap源码里面有一个正则,有点迷惑:

    if (options.cut !== true) {
      regexString += '([\\s\u200B]+|$)|[^\\s\u200B]+?([\\s\u200B]+|$)';
    }
    

    零宽空格

    如果要搞清楚这句正则是干什么的,就需要了解到零宽空格了。

    复制这个om,作如下动作: 零宽字符文本水印原理
    零宽字符文本水印原理

    那这个和加密有什么关系呢?

    水印原理

    我们不难查到,零宽空格会延伸到零宽连字。

    零宽连字和零宽不连字

    具体例子可以看到wiki上的例子。

    文本水印

    我们常见的有图片水印,软件水印,视频水印等。那文本上的水印要是什么样子呢?

    1. 文本中间穿插文案,比如这是一段[xxx.com]示例文案,说明这句话[xxx.com]的出处
    2. 文本中通过某些不可见的字符,来携带水印。用户看不见,但是复制粘贴会携带上。

    第一种就不说了,我们来看看第二种。上面说了两种领宽字符,恰好满足了不可见,且会被复制的特点。那要怎么用这两个字符呢?

    原理

    我们约定如下:

    1. ZWJ -> 0
    2. ZWSP -> 1
    3. ZWNJ -> 无

    有一段文本:这是一段示例文案,说明这句话的出处,水印为xxx.com。伪代码:

    let zwj = '‍'
    let zwsp = '&zwsp;'
    let zwnj = '‌'
    let dict = {
      0: zwj,
      1: zwsp,
    }
    let source = '这是一段示例文案,说明这句话的出处'
    let logo = 'xxx.com'
    let watermask = log
    // 追加
    `source${watermask}`
    

    如果这里我们把水印换成1011,我们可以很快的实现:

    let logo = '1011'
    let watermask = zwsp + zwj + zwsp + zwsp
    
    `source${watermask}` // 这是一段示例文案,说明这句话的出处&zwsp;‍&zwsp;&zwsp;
    

    如果要换成更丰富的水印字符,我们需要有一个作为无的标识,引入了zwnj如下:

    let logo = 'ab' // 或者更复杂
    let watermask = logo.map(char => tsf(char)).join(zwnj)
    // 每个字符转为二进制码
    function tsf(char) {
    	let b = char.charCodeAt().toString(2) // a => 1100001
      // 转为零宽字符标识
    	return b.map(itm => {
      	return dict[itm]
      })
    }
    

    解密的话,上面逆向即可。

    总结

    整个流程就是
    零宽字符文本水印原理

    应用场景

    1. 博客文章署名
    2. 小说网站等

    注意

    这种加密方式虽然一般情况是无感知的,但**如果在有些编辑器中粘贴,是可以看到零宽字符的。**比如开头的截图,浏览器的控制台是可以看到这个字符的。


    起源地下载网 » 零宽字符文本水印原理

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元