CN117332385A - 水印添加方法、装置、电子设备、存储介质及程序产品 - Google Patents

水印添加方法、装置、电子设备、存储介质及程序产品 Download PDF

Info

Publication number
CN117332385A
CN117332385A CN202311334754.6A CN202311334754A CN117332385A CN 117332385 A CN117332385 A CN 117332385A CN 202311334754 A CN202311334754 A CN 202311334754A CN 117332385 A CN117332385 A CN 117332385A
Authority
CN
China
Prior art keywords
tuple
watermark
sequence
target
remainder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311334754.6A
Other languages
English (en)
Inventor
刘绍腾
刘华罗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311334754.6A priority Critical patent/CN117332385A/zh
Publication of CN117332385A publication Critical patent/CN117332385A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/0021Image watermarking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

本申请提供了一种水印添加方法、装置、电子设备、计算机可读存储介质及计算机程序产品,包括:获取图像水印,并对图像水印进行序列转换,得到第一水印序列;获取数据库中的至少一个元组,并对至少一个元组进行分组,得到至少一个元组集合;针对各元组集合,获取元组集合包括的各元组的元组标识,并结合第一水印序列的序列长度以及元组标识,从元组集合包括的至少一个元组中,选取目标元组;针对各目标元组,获取目标元组归属的元组集合所对应的序列位数;基于序列位数,从第一水印序列中获取序列位数处的单位字符,并基于单位字符,添加水印至目标元组。如此,能够减少对数据库添加水印时对被添加水印的数据的影响。

Description

水印添加方法、装置、电子设备、存储介质及程序产品
技术领域
本申请涉及互联网技术领域,尤其涉及一种水印添加方法、装置、电子设备、计算机可读存储介质及计算机程序产品。
背景技术
相关技术中,对数据库添加水印时,大多直接将水印添加至数据库的行数据或列数据中。然而,这种水印添加方式的改动较大,并且在大型数据库中容易增加大幅度存储成本,影响原有的查询结果等,局限性较大。基于此,相关技术中的水印添加方式对被添加的数据的影响较大。
发明内容
本申请实施例提供一种水印添加方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够减少对数据库添加水印时对被添加水印的数据的影响。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种水印添加方法,包括:
获取图像水印,并对所述图像水印进行序列转换,得到第一水印序列;
获取数据库中的至少一个元组,并对所述至少一个元组进行分组,得到至少一个元组集合;
其中,所述元组集合与所述第一水印序列的序列位数存在对应关系,不同的所述元组集合对应的所述第一水印序列的序列位数不同;
针对各所述元组集合,获取所述元组集合包括的各所述元组的元组标识,并结合所述第一水印序列的序列长度以及所述元组标识,从所述元组集合包括的至少一个元组中,选取目标元组;
针对各所述目标元组,获取所述目标元组归属的所述元组集合所对应的序列位数;
基于所述序列位数,从所述第一水印序列中获取所述序列位数处的单位字符,并基于所述单位字符,添加水印至所述目标元组。
本申请实施例提供一种水印添加装置,包括:
第一获取模块,用于获取图像水印,并对所述图像水印进行序列转换,得到第一水印序列;
第二获取模块,用于获取数据库中的至少一个元组,并对所述至少一个元组进行分组,得到至少一个元组集合;其中,所述元组集合与所述第一水印序列的序列位数存在对应关系,不同的所述元组集合对应的所述第一水印序列的序列位数不同;
选取模块,用于针对各所述元组集合,获取所述元组集合包括的各所述元组的元组标识,并结合所述第一水印序列的序列长度以及所述元组标识,从所述元组集合包括的至少一个元组中,选取目标元组;
第三获取模块,用于针对各所述目标元组,获取所述目标元组归属的所述元组集合所对应的序列位数;
水印添加模块,用于基于所述序列位数,从所述第一水印序列中获取所述序列位数处的单位字符,并基于所述单位字符,添加水印至所述目标元组。
在上述方案中,所述第二获取模块,还用于当所述元组的数量为多个时,获取多个所述元组对应的分组数量,并基于所述分组数量,确定各所述元组对应的余数;基于各所述元组对应的余数,将对应相同余数的所述元组划分为同一组,得到元组集合。
在上述方案中,所述第二获取模块,还用于针对各所述元组执行以下处理:获取水印密钥、以及所述元组的元组标识;将所述水印密钥与所述元组标识进行求和,得到求和结果,并对所述求和结果进行哈希处理,得到所述元组对应的哈希值;将所述哈希值对所述分组数量进行取模处理,得到所述元组对应的余数。
在上述方案中,所述选取模块,还用于获取预设的调节参数的参数值,并将所述序列长度与所述调节参数的参数值进行乘积处理,得到分组数量;基于所述分组数量以及各所述元组的所述元组标识,确定各所述元组对应的余数;基于各所述元组对应的余数,从所述元组集合包括的至少一个元组中,选取对应的余数小于余数阈值的元组,并将选取的所述元组,确定为所述目标元组。
在上述方案中,所述装置还包括确定模块,所述确定模块,用于获取各所述目标元组的数据属性;基于所述目标元组的数据属性,确定所述目标元组的水印添加方式;所述水印添加模块,还用于基于所述单位字符,采用对应的水印添加方式,添加水印至所述目标元组。
在上述方案中,所述数据属性包括文本属性,所述水印添加模块,还用于确定文本属性的所述目标元组对应的水印添加位置;获取所述单位字符对应的目标字符,并将所述目标字符插入至所述目标元组中的所述水印添加位置;其中,不同的所述单位字符所对应的目标字符不同。
在上述方案中,所述水印添加模块,还用于获取所述目标元组的哈希值以及所述目标元组的文本数据长度;对所述目标元组的哈希值与所述文本数据长度进行取模处理,得到所述目标元组对应的余数,并基于所述目标元组对应的余数,确定所述目标元组对应的水印添加位置。
在上述方案中,所述数据属性包括数值属性,所述水印添加模块,还用于获取数值属性的所述目标元组对应的第一浮点数,并对所述第一浮点数进行序列转换,得到第一整数序列;获取所述第一整数序列的最低有效位;基于所述最低有效位以及所述单位字符,添加水印至所述目标元组。
在上述方案中,所述水印添加模块,还用于将所述单位字符与所述第一整数序列的最低有效位进行比对,并当比对结果表征所述单位字符与所述最低有效位不同时,对所述第一整数序列加上第一预设数值,得到第二整数序列;对所述第二整数序列进行反序列处理,得到所述第二整数序列对应的第二浮点数,并将所述第一浮点数替换为所述第二浮点数,以实现对数值属性的所述目标元组的水印添加。
在上述方案中,所述水印添加模块,还用于对所述第一浮点数进行二进制转换,得到所述第一浮点数对应的二进制序列,并对所述二进制序列进行十进制转换,得到所述第一整数序列;将所述第一整数序列与第二预设数值进行除法处理,得到余数结果,并将所述余数结果确定为所述第一整数序列的最低有效位。
在上述方案中,所述装置还包括水印提取模块,所述水印提取模块,用于获取添加水印后的所述数据库中的至少一个目标元组,并对所述至少一个目标元组进行分组,得到至少一个目标元组集合;针对各所述目标元组集合,确定所述目标元组集合中各所述目标元组对应的水印字符,所述水印字符为所述目标元组的水印提取位置处所对应的字符;将至少一个所述水印字符中出现次数最多的水印字符,确定为所述目标元组集合所对应的序列位数处的单位字符;对至少一个所述单位字符进行组合,得到第二水印序列,并获取所述图像水印的图像高度以及图像宽度;基于所述图像高度以及所述图像宽度,对所述第二水印序列进行反序列化处理,得到所述图像水印。
本申请实施例提供一种电子设备,包括:
存储器,用于存储计算机可执行指令;
处理器,用于执行所述存储器中存储的计算机可执行指令时,实现本申请实施例提供的水印添加方法。
本申请实施例提供一种计算机可读存储介质,存储有计算机可执行指令,用于引起处理器执行时,实现本申请实施例提供的水印添加方法。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机可执行指令,该计算机可执行指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机可执行指令,处理器执行该计算机可执行指令,使得该电子设备执行本申请实施例提供的水印添加方法。
本申请实施例具有以下有益效果:
首先获取图像水印对应的第一水印序列,再对数据库中的至少一个元组进行分组,得到至少一个元组集合,然后针对各元组集合,从元组集合包括的至少一个元组中,选取目标元组,接着针对各目标元组,获取目标元组归属的元组集合所对应的序列位数,从而基于序列位数,从第一水印序列中获取序列位数处的单位字符,并基于单位字符,添加水印至所述目标元组。如此,仅在原有的数据上利用单位字符进行轻微修改可以达到无痕、无影响的效果,从而减少对数据库添加水印时对被添加水印的数据的影响。
附图说明
图1是本申请实施例提供的水印添加系统100的架构示意图;
图2是本申请实施例提供的电子设备的结构示意图;
图3是本申请实施例提供的水印添加方法的流程示意图;
图4是本申请实施例提供的水印提取过程的流程示意图;
图5是本申请实施例提供的水印添加方法的流程示意图;
图6是本申请实施例提供的水印提取方法的流程示意图;
图7是本申请实施例提供的水印添加装置的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
2)客户端(Client),又称用户端,是指与服务器相对应的为用户提供本地服务的程序,除了一些只能在本地运行的应用程序之外,一般安装在终端上,需要与服务器相互配合运行,即需要网络中有相应的服务器和服务程序来提供相应的服务,这样在客户端和服务器端,需要建立特定的通信连接,来保证应用程序的正常运行。
3)人工智能(AI,Artificial Intelligence),是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法和技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
4)元组(tuple),关系数据库中的基本概念,关系数据库是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。在二维表里,元组也称为行。
5)零宽字符,一种在Web端、移动聊天软件、Word文档中不打印出来的字符,也称为非打印字符,利用这种不可见特性可以进行水印嵌入,通过视觉无法看出字符串中是否有零宽字符,但是通过代码遍历可以获取到该字符。例如,\u200e以及\u200f都是零宽字符,在Web端、移动聊天软件、Word文档中均不显示,其中,\u200e为左至右方向标识符号,\u200f为右至左方向标识符号。
6)最低有效位(LSB,Least Significant Bit),是指一个二进制数字中的第0位(即最低位),权值为2^0,可以用来检测数的奇偶性,代表二进制数中的最小的单位,可以用来指示数字很小的变化。
参见图1,图1是本申请实施例提供的水印添加系统100的架构示意图,终端(示例性示出了终端400),终端400通过网络300连接服务器200,其中,网络300可以是广域网或者局域网,又或者是二者的组合,使用无线或有线链路实现数据传输。
其中,终端400用于,发送图像水印至服务器200;
服务器200用于,获取图像水印,并对图像水印进行序列转换,得到第一水印序列;获取数据库中的至少一个元组,并对至少一个元组进行分组,得到至少一个元组集合;其中,元组集合与第一水印序列的序列位数存在对应关系,不同的元组集合对应的第一水印序列的序列位数不同;针对各元组集合,获取元组集合包括的各元组的元组标识,并结合第一水印序列的序列长度以及元组标识,从元组集合包括的至少一个元组中,选取目标元组;针对各目标元组,获取目标元组归属的元组集合所对应的序列位数;基于序列位数,从第一水印序列中获取序列位数处的单位字符,并基于单位字符,添加水印至目标元组。
一些实施例中,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,ContentDeliver Network)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端400可以是智能手机、平板电脑、笔记本电脑、台式计算机、机顶盒、智能语音交互设备、智能家电、虚拟现实设备、车载终端、飞行器、便携式音乐播放器、个人数字助理、专用消息设备、便携式游戏设备、智能音箱及智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
接下来对实施本申请实施例提供的执行水印添加方法的电子设备进行说明。参见图2,图2是本申请实施例提供的电子设备的结构示意图,该电子设备可以是服务器也可以是终端,以电子设备为图1中所示的服务器为例,图2所示的电子设备包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。终端400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口430包括使得能够显示媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器450旨在包括任意适合类型的存储器。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他电子设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够显示信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图2示出了存储在存储器450的水印添加装置455,其可以是程序和插件等形式的软件,包括以下软件模块:第一获取模块4551、第二获取模块4552、选取模块4553、第三获取模块4554以及水印添加模块4555,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的水印添加装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的水印添加方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件。
在一些实施例中,终端或服务器可以通过运行计算机程序来实现本申请实施例提供的水印添加方法。举例来说,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,Application),即本地客户端,即需要在操作系统中安装才能运行的程序,如即时通信APP、网页浏览器APP;也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的小程序。总而言之,上述计算机程序可以是任意形式的客户端、模块或插件。
基于上述对本申请实施例提供的水印添加系统及电子设备的说明,下面说明本申请实施例提供的水印添加方法。在实际实施时,本申请实施例提供的水印添加方法可以由终端或服务器单独实现,或者由终端及服务器协同实现,以由图1中的服务器200单独执行本申请实施例提供的水印添加方法为例进行说明。参见图3,图3是本申请实施例提供的水印添加方法的流程示意图,接下来,将结合图3示出的步骤进行说明。
步骤101,服务器获取图像水印,并对图像水印进行序列转换,得到第一水印序列。
在实际实施时,服务器接收到针对携带图像水印的水印添加请求,解析该水印添加请求,从而确定图像水印,这里,图像水印可以是预先存储于终端本地的,也可以是终端从外界(如互联网)中获取到的,还可以是终端实时采集的,例如通过终端的摄像头实时采集到的。
在实际实施时,图像水印也即是水印图像,如黑白图像,通常黑白图像大小为32*32,即需要1024个比特位表示;这里,对图像水印进行序列转换,也即是对图像水印进行二进制转换,得到以0、1组成的二进制水印序列,也即第一水印序列,从而将该水印序列插入到数据库中。
步骤102,获取数据库中的至少一个元组,并对至少一个元组进行分组,得到至少一个元组集合;其中,元组集合与第一水印序列的序列位数存在对应关系,不同的元组集合对应的第一水印序列的序列位数不同。
在实际实施时,由于元组的数量为至少一个,因此,当元组的数量为多个时,还需要对多个元组进行分组,具体地,对至少一个元组进行分组,得到至少一个元组集合的过程,可以是,当元组的数量为多个时,获取多个元组对应的分组数量,并基于分组数量,确定各元组对应的余数;基于各元组对应的余数,将对应相同余数的元组划分为同一组,得到元组集合。
需要说明的是,对于获取多个元组对应的分组数量的过程,可以是,获取预设的调节参数的参数值以及第一水印序列的序列长度,并将序列长度与调节参数的参数值进行乘积处理,得到分组数量。其中,预设的调节参数为预先设定的,用户可以根据关系数据库的元组数量动态调整。
在实际实施时,在获取多个元组对应的分组数量之后,基于分组数量,确定各元组对应的余数的过程,可以是,针对各元组执行以下处理:获取水印密钥、以及元组的元组标识;将水印密钥与元组标识进行求和,得到求和结果,并对求和结果进行哈希处理,得到元组对应的哈希值;将哈希值对分组数量进行取模处理,得到元组对应的余数。
需要说明的是,水印密钥也即对象密钥,为对数据库添加水印的对象所创建的,用于登录数据库或水印添加系统,指示相应对象的身份,当对象获取了水印密钥,也即具备了对数据库添加水印的权限;而元组标识可以是数字形式,相当于元组的主键,用于索引相应元组。
在实际实施时,获取水印密钥、以及元组的元组标识之后,将水印密钥与元组标识进行求和,得到求和结果,并对求和结果进行哈希处理,得到元组对应的哈希值,即
R_i.H=hash(Key+R_i.P)……公式(1);
其中,Key为水印密钥,R_i.P为元组的元组标识。
在实际实施时,在得到元组对应的哈希值之后,即确定每个元组对应的余数,具体地,将哈希值对分组数量进行取模处理,得到元组对应的余数。
在实际实施时,在确定各元组对应的余数后,可以根据余数对多个元组进行排序,将对应相同余数的元组划分为同一组,得到至少一个元组集合;这里,每个元组的余数,用于指示该元组对应的第一水印序列的序列位数,例如,当元组的余数为1时,则该元组与第一水印序列第一位对应,当元组的余数为2时,则该元组与第一水印序列第二位对应,同时,又由于元组集合为根据各元组对应的余数所划分得到的,因此,元组集合与第一水印序列的序列位数存在对应关系,不同的元组集合对应的第一水印序列的序列位数不同,例如,当将余数为1的元组划分为第一元组集合,将余数为4的元组划分为第二元组集合,则第一元组集合与第一水印序列第一位对应,第二元组集合与第一水印序列第四位对应。
在一些实施例中,当元组的数量为一个时,如前文所述,分组数量为根据关系数据库中的元组数量动态调整的,因此,当元组数量为一个时,分组数量也为一个,基于此,基于分组数量,确定的该元组对应的余数,也即该元组的哈希值。相应地,对该元组进行分组,也只能得到一个元组集合。
步骤103,针对各元组集合,获取元组集合包括的各元组的元组标识,并结合第一水印序列的序列长度以及元组标识,从元组集合包括的至少一个元组中,选取目标元组。
在实际实施时,针对各元组集合,获取元组集合包括的各元组的元组标识,这里的元组标识,如前文所述,对此,本申请实施例不做赘述。从而,结合第一水印序列的序列长度以及元组标识,从元组集合包括的至少一个元组中,选取目标元组的过程,可以是,结合第一水印序列的序列长度以及元组标识,确定各元组的余数,再基于各元组对应的余数,从元组集合包括的至少一个元组中,选取对应的余数小于余数阈值的元组,并将选取的元组,确定为目标元组。
需要说明的是,结合第一水印序列的序列长度以及元组标识,确定各元组的余数的过程,可以是,获取预设的调节参数的参数值,并将序列长度与调节参数的参数值进行乘积处理,得到分组数量;基于分组数量以及各元组的元组标识,确定各元组对应的余数。这里,将序列长度与调节参数的参数值进行乘积处理,得到分组数量;基于分组数量以及各元组的元组标识,确定各元组对应的余数的过程,如前文所述,对此,本申请实施例不做赘述。
需要说明的是,这里的余数阈值也为预先设定的,具体地,获取预设的余数调节参数的参数值,然后获取余数调节参数的参数值与预设的调节参数的参数值的比值,将该比值确定为余数阈值。
在实际实施时,从元组集合包括的至少一个元组中,选取对应的余数小于余数阈值的元组,并将选取的元组,确定为目标元组,而对应的余数不小于余数阈值的元组则作为非目标元组,这里,非目标元组为不被添加水印的元组。
步骤104,针对各目标元组,获取目标元组归属的元组集合所对应的序列位数。
在实际实施时,在选取目标元组后,确定各目标元组所归属的元组集合,由于元组集合与第一水印序列的序列位数存在对应关系,不同的元组集合对应的第一水印序列的序列位数不同,因此,可以获取目标元组归属的元组集合所对应的序列位数。接上述示例,当将余数为1的元组划分为第一元组集合,将余数为4的元组划分为第二元组集合,则第一元组集合与第一水印序列第一位对应,第二元组集合与第一水印序列第四位对应,如果目标元组归属于第一元组集合,则获取的目标元组归属的元组集合所对应的序列位数为第一位,如果目标元组归属于第二元组集合,则获取的目标元组归属的元组集合所对应的序列位数为第四位。
步骤105,基于序列位数,从第一水印序列中获取序列位数处的单位字符,并基于单位字符,添加水印至目标元组。
在实际实施时,在确定了序列位数后,即从第一水印序列中获取序列位数处的单位字符,例如,当第一水印序列为10011,若获取的序列位数为第一位,则从第一水印序列中获取序列位数处的单位字符为1,若获取的序列位数为第三位,则从第一水印序列中获取序列位数处的单位字符为0。从而,基于单位字符,添加水印至相应目标元组。
需要说明的是,由于数据库中的元组包括多个数据属性,如文本属性以及数值属性,不同数据属性的目标元组的水印添加方式不同,因此,基于单位字符,添加水印至相应目标元组的过程,可以是,获取各目标元组的数据属性,也即对各目标元组的数据属性进行分析,得到各目标元组的数据属性;基于目标元组的数据属性,确定目标元组的水印添加方式;从而,基于单位字符,添加水印至目标元组的过程,可以是,基于单位字符,采用对应的水印添加方式,添加水印至目标元组。接下来,目标元组的数据属性包括文本属性以及数值属性为例,分别对基于单位字符,采用对应的水印添加方式,添加水印至目标元组的过程进行说明。
在一些实施例中,数据属性包括文本属性,基于单位字符,采用对应的水印添加方式,添加水印至目标元组的过程,可以是,确定文本属性的目标元组对应的水印添加位置;获取单位字符对应的目标字符,并将目标字符插入至目标元组中的水印添加位置;其中,不同的单位字符所对应的目标字符不同。
在实际实施时,文本属性的目标元组对应的水印添加位置可以是预先设置的,例如目标元组的末尾,也可以是计算得到的,具体地,获取目标元组的哈希值以及目标元组的文本数据长度;对目标元组的哈希值与文本数据长度进行取模处理,得到目标元组对应的余数,并基于目标元组对应的余数,确定目标元组对应的水印添加位置。
需要说明的是,目标元组的哈希值的获取过程如前文所述,对此本申请实施例不做赘述,而目标元组的文本数据长度也目标元组的数据长度,从而对目标元组的哈希值与文本数据长度进行取模处理,得到目标元组对应的余数,并基于目标元组对应的余数,确定目标元组对应的水印添加位置。例如,当目标元组对应的余数为1时,则将目标元组的第一位作为目标元组对应的水印添加位置。
在实际实施时,单位字符包括0和1,不同单位字符对应的目标字符不同,单位字符与目标字符的对应关系为预先设置的,例如,1对应的目标字符为零宽字符A(\u200e),0对应的目标字符为零宽字符B(\u200f),这样,确定了单位字符后,获取单位字符对应的目标字符,从而将目标字符插入至目标元组中的水印添加位置。如此,为数据库添加一种隐形标识,不会改变关系型数据库中文本数据的原始外观和含义,达到无痕、无影响的水印添加效果。
在另一些实施例中,数据属性包括数值属性,基于单位字符,采用对应的水印添加方式,添加水印至目标元组的过程,可以是,获取数值属性的目标元组对应的第一浮点数,并对第一浮点数进行序列转换,得到第一整数序列;获取第一整数序列的最低有效位;基于最低有效位以及单位字符,添加水印至目标元组。
需要说明的是,当目标元组的数据属性为数值属性时,目标元组一般为浮点数,从而对第一浮点数进行序列转换,得到第一整数序列的过程,可以是,对第一浮点数进行二进制转换,得到第一浮点数对应的二进制序列,如利用IEEE754标准将浮点数转换为二进制表示,然后对二进制序列进行十进制转换,得到第一整数序列。
示例性地,当数值属性的目标元组对应的第一浮点数为-1.5时,对第一浮点数进行二进制转换,得到第一浮点数对应的二进制序列,即10111111110000000000000000000000,然后对二进制序列进行十进制转换,得到第一整数序列,也即将10111111110000000000000000000000转换为整数-1069547520。
然后,对于获取第一整数序列的最低有效位的过程,可以是,将第一整数序列与第二预设数值进行除法处理,得到余数结果,并将余数结果确定为第一整数序列的最低有效位。
需要说明的是,第二预设数值为预先设置的,例如为2,接上述示例,当第一整数序列为-1069547520时,将第一整数序列与第二预设数值如2进行除法处理,得到余数结果,也即0,将0确定为第一整数序列的最低有效位;当第一整数序列为-1069547521时,将第一整数序列与第二预设数值如2进行除法处理,得到余数结果,也即1,将1确定为第一整数序列的最低有效位。
在实际实施时,在确定最低有效位以及单位字符后,基于最低有效位以及单位字符,添加水印至目标元组的过程,可以是,将单位字符与第一整数序列的最低有效位进行比对,并当比对结果表征单位字符与最低有效位不同时,对第一整数序列加上第一预设数值,得到第二整数序列;对第二整数序列进行反序列处理,得到第二整数序列对应的第二浮点数,并将第一浮点数替换为第二浮点数,以实现对数值属性的目标元组的水印添加。
需要说明的是,单位字符包括0和1,将单位字符与第一整数序列的最低有效位进行比对,当比对结果表征单位字符与最低有效位相同时,则不执行对数值属性的目标元组的水印添加操作;当比对结果表征单位字符与最低有效位不同时,对第一整数序列加上第一预设数值,例如1,得到第二整数序列;再对第二整数序列进行反序列处理,得到第二整数序列对应的第二浮点数,具体地,对第二整数序列进行二进制转化,得到第二整数序列对应的二进制序列,在对第二整数序列对应的二进制序列进行浮点数转化,得到第二浮点数,也即将第二整数序列对应的二进制序列转化为第二浮点数,并将第一浮点数替换为第二浮点数,以实现对数值属性的目标元组的水印添加
接上述示例,当第一整数序列为-1069547520时,将第一整数序列与第二预设数值如2进行除法处理,得到余数结果,也即0,将0确定为第一整数序列的最低有效位,当单位字符为0时,则执行对数值属性的目标元组的水印添加操作;当单位字符为1时,则对第一整数序列-1069547520加上第一预设数值,例如1,得到第二整数序列,即-1069547519,然后再对第二整数序列进行反序列处理,得到第二整数序列对应的第二浮点数,将第一浮点数替换为第二浮点数,从而改变原有的数据,实现了水印添加效果。如此,将水印嵌入到最低有效位中,仅在原有数据上进行轻微修改,减小水印对数据产生的影响,从而实现无痕水印。
在一些实施例中,在基于单位字符,添加水印至目标元组,也即对数据库添加完水印之后,还可以将数据库中添加的水印提取出来,具体地,参见图4,图4是本申请实施例提供的水印提取过程的流程示意图,基于图4,将数据库中添加的水印提取出来的过程可以通过以下步骤实现。
步骤201,服务器获取添加水印后的数据库中的至少一个目标元组,并对至少一个目标元组进行分组,得到至少一个目标元组集合。
需要说明的是,这里获取添加水印后的数据库中的至少一个目标元组,并对至少一个目标元组进行分组,得到至少一个目标元组集合的过程,与前文所述的获取数据库中的至少一个元组,并对至少一个元组进行分组,得到至少一个元组集合的过程相类似,对此,本申请实施例不做赘述。
步骤202,针对各目标元组集合,确定目标元组集合中各目标元组对应的水印字符,水印字符为目标元组的水印提取位置处所对应的字符。
在实际实施时,各目标元组集合中包括至少一个目标元组,确定目标元组集合中各目标元组对应的余数,并基于各目标元组对应的余数,从目标元组集合包括的至少一个目标元组中,选取对应的余数小于余数阈值的目标元组,并将选取的目标元组,确定为水印元组,这里,水印元组用于指示添加了水印的元组。同时,将目标元组集合中,对应的余数不小于余数阈值的目标元组确定为非水印元组,这里,非水印元组用于指示未水印的元组。
需要说明的是,这里确定目标元组集合中各目标元组对应的余数,并基于各目标元组对应的余数,从目标元组集合包括的至少一个目标元组中,选取对应的余数小于余数阈值的水印元组的过程,与前文所述的结合第一水印序列的序列长度以及元组标识,从元组集合包括的至少一个元组中,选取目标元组的过程相类似,同时,确定这里的余数阈值的过程与前文所述的确定余数阈值也相同,对此,本申请实施例不做赘述。
基于此,确定目标元组集合中各目标元组对应的水印字符的过程,也即是确定目标元组集合中各水印元组对应的水印字符的过程。
在实际实施时,对于确定目标元组集合中各水印元组对应的水印字符的过程,具体地,获取各水印元组的数据属性,基于水印元组的数据属性,确定水印元组的水印提取方式;采用对应的水印提取方式,从水印元组中提取对应的水印字符。接下来,以水印元组的数据属性包括文本属性以及数值属性为例,分别对采用对应的水印提取方式,从水印元组中提取对应的水印字符的过程进行说明。
在一些实施例中,数据属性包括文本属性,采用对应的水印提取方式,从水印元组中提取对应的水印字符的过程,可以是,确定文本属性的水印元组对应的水印提取位置;从而基于水印提取位置处的目标字符,获取对应的水印字符。
在实际实施时,文本属性的水印元组对应的水印提取位置与添加水印过程中水印添加位置相对应,具体地,当文本属性的目标元组对应的水印添加位置是预先设置的时,直接将预先设置的水印添加位置作为水印提取位置。当文本属性的目标元组对应的水印添加位置是计算得到的时,文本属性的水印元组对应的水印提取位置也是计算得到的,具体地,获取水印元组的哈希值以及水印元组的文本数据长度;将水印元组的文本数据长度减一,得到水印元组的目标文本数据长度;对水印元组的哈希值与目标文本数据长度进行取模处理,得到水印元组对应的余数,并基于水印元组对应的余数,确定水印元组对应的水印提取位置。
需要说明的是,水印元组的哈希值的获取过程如前文所述,对此本申请实施例不做赘述,而由于文本属性的元组添加完水印后,相应元组的文本数据长度增加了一个位,因此,这里将水印元组的文本数据长度减一,得到水印元组的目标文本数据长度,从而基于水印元组的哈希值与目标文本数据长度,确定水印元组对应的余数,并基于水印元组对应的余数,确定水印元组对应的水印提取位置。这里,对水印元组的哈希值与目标文本数据长度进行取模处理,得到水印元组对应的余数,并基于水印元组对应的余数,确定水印元组对应的水印提取位置的过程,与前文所述的对目标元组的哈希值与文本数据长度进行取模处理,得到目标元组对应的余数,并基于目标元组对应的余数,确定目标元组对应的水印添加位置的过程相类似,对此,本申请实施例不做赘述。
在实际实施时,如前文所述,单位字符包括0和1,不同单位字符对应的目标字符不同,单位字符与目标字符的对应关系为预先设置的,这里,当在水印提取位置提取到目标字符时,获取水印字符对应的单位字符,从而将该单位字符,确定为对应的水印字符。示例性地,目标字符为零宽字符A(\u200e)时,对应的单位字符为1,目标字符为零宽字符B(\u200f)时,对应的单位字符为0,从而将提取的目标字符对应的单位字符,确定为对应的水印字符。
在另一些实施例中,数据属性包括数值属性,采用对应的水印提取方式,从水印元组中提取对应的水印字符的过程,可以是,获取数值属性的水印元组对应的第三浮点数,并对第三浮点数进行序列转换,得到第三整数序列;获取第三整数序列的最低有效位;基于最低有效位,确定对应的水印字符。
需要说明的是,当水印元组的数据属性为数值属性时,水印元组一般为浮点数,从而对第三浮点数进行序列转换,得到第三整数序列的过程,可以是,对第三浮点数进行二进制转换,得到第三浮点数对应的二进制序列,如利用IEEE754标准将浮点数转换为二进制表示,然后对二进制序列进行十进制转换,得到第三整数序列。
然后,对于获取第三整数序列的最低有效位的过程,可以是,将第三整数序列与前述的第二预设数值即2进行除法处理,得到余数结果,并将余数结果确定为第三整数序列的最低有效位。
需要说明的是,如前文所述,将单位字符与第一整数序列的最低有效位进行比对,当比对结果表征单位字符与最低有效位相同时,则不执行对数值属性的目标元组的水印添加操作,此时,第三整数序列与第一整数序列相同,从而第三整数序列对应的余数结果,也是第一整数序列对应的余数结果,又由于单位字符与最低有效位相同,因此,第三整数序列对应的余数结果也即第三整数序列的最低有效位,与单位字符相同,从而基于最低有效位,确定对应的水印字符的过程,为将最低有效位,作为对应的水印字符。
而当比对结果表征单位字符与最低有效位不同时,此时,第三整数序列与第二整数序列相同,从而第三整数序列对应的余数结果,也是第二整数序列对应的余数结果,而第二整数序列为对第一整数序列加上第一预设数值即1所得到的,因此,当第一整数序列的最低有效位与单位字符不同时,加上1之后的第二整数序列的最低有效值即会与单位字符相同,因此,第三整数序列对应的余数结果也即第三整数序列的最低有效位,与单位字符相同,从而基于最低有效位,确定对应的水印字符的过程,为将最低有效位,作为对应的水印字符。
基于此,对于数值属性的水印元组,在获取第三整数序列的最低有效位之后,该最低有效位即是提取到的水印字符。
如此,针对各目标元组集合,确定了目标元组集合中各目标元组也即水印元组对应的水印字符。
步骤203,将至少一个水印字符中出现次数最多的水印字符,确定为目标元组集合所对应的序列位数处的单位字符。
需要说明的是,由于目标元组集合中包括至少一个水印元组,因此,针对一个目标元组集合,会提取到至少一个水印字符;又由于目标元组集合与水印序列的序列位数存在对应关系,不同的目标元组集合对应的水印序列的序列位数不同,因此,针对目标元组集合所对应的序列位数,也会存在至少一个水印字符,从而将至少一个水印字符中出现次数最多的水印字符,确定为目标元组集合所对应的序列位数处的单位字符。
示例性地,目标元组集合A中包括三个水印元组,三个水印元组分别提取到的水印字符为0、0、1,同时,目标元组集合A对应的水印序列的序列位数为第二位,则将至少一个水印字符中出现次数最多的水印字符,确定为目标元组集合所对应的序列位数处的单位字符也即是,将出现次数最多的水印字符0,确定为水印序列的第二位处的单位字符,也即水印序列的第二位为0。
如此,如果由于数据库中某些元组被篡改导致原有的水印字符发生变化时,通过选取出现次数最多的水印字符,作为目标元组集合所对应的序列位数处的单位字符,提高了鲁棒性。
步骤204,对至少一个单位字符进行组合,得到第二水印序列,并获取图像水印的图像高度以及图像宽度。
在实际实施时,在确定至少一个单位字符之后,基于各序列位数,对至少一个单位字符按序进行组合,得到第二水印序列,然后获取图像水印的图像高度以及图像宽度,这里,图像水印的图像高度以及图像宽度为预先记录好的。
需要说明的是,这里的第二水印序列与第一水印序列可以相同,当这里的水印提取过程针对嵌入了第一水印序列对应的图像水印的数据库时,第二水印序列与第一水印序列相同。当这里的水印提取过程不是针对嵌入了第一水印序列对应的图像水印的数据库时,第二水印序列与第一水印序列不同
步骤205,基于图像高度以及图像宽度,对第二水印序列进行反序列化处理,得到图像水印。
需要说明的是,基于图像高度以及图像宽度,对第二水印序列进行反序列化处理,得到图像水印的过程,也即是基于第二水印序列,生成对应的图像,并结合图像高度以及图像宽度,对该图像进行尺寸调整,得到图像水印。
下面,继续对本申请实施例提供的水印添加方法进行介绍,图5是本申请实施例提供的水印添加方法的流程示意图,参见图5,本申请实施例提供的水印添加方法由终端、服务器协同实施。
步骤301,终端获取图像水印。
在实际实施时,终端上设置有支持水印添加的客户端,从而终端获取图像水印,也即终端上支持水印添加的客户端获取图像水印。
需要说明的是,图像水印可以由用户基于该客户端的人机交互界面,触发人机交互界面中的上传功能项使客户端在人机交互界面呈现图像水印选择界面,用户(例如可以是在客户端上进行操作的对象或人工智能程序)则基于该图像水印选择界面,从终端上传图像水印,从而使得客户端获得上传的图像水印,也即终端响应于针对图像水印的上传操作,获取图像水印。
此外,从终端上传的图像水印也可以是预先存储于终端本地的,也可以是由与终端通信连接的其他设备所发送的,对此,本申请实施例不做限定。
步骤302,终端发送图像水印至服务器。
步骤303,服务器对接收到的图像水印进行序列转换,得到第一水印序列,并获取数据库中的至少一个元组。
步骤304,对至少一个元组进行分组,得到至少一个元组集合,并针对各元组集合,获取元组集合包括的各元组的元组标识。
其中,元组集合与第一水印序列的序列位数存在对应关系,不同的元组集合对应的第一水印序列的序列位数不同。
步骤305,结合第一水印序列的序列长度以及元组标识,从元组集合包括的至少一个元组中,选取目标元组,并针对各目标元组,获取目标元组归属的元组集合所对应的序列位数。
步骤306,基于序列位数,从第一水印序列中获取序列位数处的单位字符,并基于单位字符,添加水印至目标元组。
步骤307,服务器生成用于指示水印添加完成的提示消息。
步骤308,服务器发送提示消息至终端。
在实际实施时,服务器将提示信息发送至终端之后,终端对提示信息进行展示,从而提醒工作人员已完成水印添加。
下面,继续对本申请实施例提供的水印提取方法进行介绍,图6是本申请实施例提供的水印提取方法的流程示意图,参见图6,本申请实施例提供的水印提取方法由终端、服务器协同实施。
步骤401,终端响应于针对数据库的水印提取指令,发送水印提取请求至服务器。
在实际实施时,终端上设置有支持水印提取的客户端,从而终端响应于针对水印提取指令,发送水印提取请求至服务器,也即终端上支持水印提取的客户端响应于针对水印提取指令,发送水印提取请求至服务器;水印提取指令可以是由与终端通信连接的其他设备发送给客户端,还可以是由用户基于客户端的人机交互界面,触发相应的确认功能项后生成,还可以由一定的触发条件由客户端自动生成,对此,本申请实施例不做限制。
步骤402,服务器获取添加水印后的数据库中的至少一个目标元组,并对至少一个目标元组进行分组,得到至少一个目标元组集合。
步骤403,服务器针对各目标元组集合,确定目标元组集合中各目标元组对应的水印字符,并将至少一个水印字符中出现次数最多的水印字符,确定为目标元组集合所对应的序列位数处的单位字符。
其中,水印字符为目标元组的水印提取位置处所对应的字符。
步骤404,对至少一个单位字符进行组合,得到第二水印序列,并获取图像水印的图像高度以及图像宽度。
步骤405,基于图像高度以及图像宽度,对第二水印序列进行反序列化处理,得到图像水印。
步骤406,将图像水印发送至终端。
步骤407,终端接收图像水印,并对图像水印进行展示。
在实际实施时,终端可以在该终端上设置的支持水印提取的客户端的人机交互界面中展示图像水印,还可以将图像水印保存至终端本地,还可以将图像水印发送至与终端通信连接的其他设备等。
应用本申请上述实施例,首先获取图像水印对应的第一水印序列,再对数据库中的至少一个元组进行分组,得到至少一个元组集合,然后针对各元组集合,从元组集合包括的至少一个元组中,选取目标元组,接着针对各目标元组,获取所述目标元组归属的元组集合所对应的序列位数,从而基于序列位数,从第一水印序列中获取序列位数处的单位字符,并基于单位字符,添加水印至目标元组。如此,仅在原有的数据上利用单位字符进行轻微修改可以达到无痕、无影响的效果,从而减少对数据库添加水印时对被添加水印的数据的影响。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
相关技术中,对数据库添加水印时,大多以直接将水印添加至数据库的行数据或列数据中。然而,这种水印添加方式的改动较大,并且在大型数据库中容易增加大幅度存储成本,影响原有的查询结果等,局限性较大。基于此,相关技术中的水印添加方式对被添加的数据的影响较大。
基于此,本申请实施例提供一种无痕数据库水印算法,仅在原有数据上进行轻微修改,可以达到无痕、无影响的水印添加效果。同时,本申请提出基于零宽字符的文本型嵌入方法、基于LSB的数值型嵌入方法,可以覆盖绝大多数的数据库。此外,在嵌入水印后,还可以对数据库可以实现水印图像的提取。
在实际实施时,本申请针对关系型数据库,在给定一个关系型数据库以及相关的密钥、水印信息后,可以通过下面描述的水印嵌入算法,实现水印嵌入。后续在数据库泄漏后,通过下面描述的水印检出算法,提取出对应水印信息,实现版权证明与泄漏追溯。
接下来,对水印嵌入算法进行说明。具体地,水印嵌入算法的目标是将一个黑白图像作为水印图像嵌入数据库中,具体地,将黑白图像(图像水印)转化为0和1构成的水印序列,从而将图像以0、1序列的形式插入到关系型数据库中。
需要说明的是,将图像以0、1序列的形式插入到关系型数据库中,也即将图像以0、1序列的形式插入到关系型数据库的元组中,具体地,在将水印图像转化为0、1构成的水印序列(W_Bits)后,获取水印序列的长度(W_Length);再根据用户密钥(Key)和每个元组R_i的主键(R_i.P),计算每个元组的哈希值(R_i.H),如公式(1)所示;然后计算分组数量E,即E=W_Length*N,其中,N(预设的调节参数的参数值)为用户设定值,可以根据数据库的元组数量动态调整,用于影响分组的方式与每组的数量;接着,由元组哈希值(R_i.H)对分组数量E进行取模处理,得到每个元组对应的余数(R_i.Mod);再根据余数对元组进行排序,将具有相同余数的元组将被划分到同一组(元组集合);最后,针对每一组元组(元组集合),遍历所有元组,为每个元组嵌入水印位。
需要说明的是,每一组元组与水印序列的序列位数存在对应关系,不同组的元组对应的水印序列的序列位数不同,同时,由于元组是根据对应的余数进行划分的,因此,元组对应的余数也即指示了元组对应的水印序列的序列位数。
对于遍历所有元组,为每个元组嵌入水印位的过程,具体地,如果元组的余数小于e/N(余数阈值),则对该元组(目标元组)进行水印嵌入,其中,e(余数调节参数)为预先设定的值;同时,这里,在关系型数据库中的元组存两种数据类型,即文本属性和数值属性,因此,遍历元组的属性,针对不同属性的元组,水印添加方式不同。
在一些实施例中,如果当前元组的属性为文本属性,首先由元组哈希值(R_i.H)除以文本属性的元组的数据长度(length(R_i.A))后取模得到该元组的水印添加位置(R_i.L),然后获取当前元组对应的余数所指示的序列位数,再从水印序列中获取相应序列位数处的字符(单位字符),如果获取的相应序列位数处的字符为1(W_Bits(R_i.Mod)=‘1’),则在该元组的水印添加位置(R_i.L)插入零宽字符A(\u200e),如果获取的相应序列位数处的字符为0(W_Bits(R_i.Mod)=‘0’),则在该元组的水印添加位置(R_i.L)插入零宽字符B(\u200f)。
在另一些实施例中,如果当前元组的属性为数值属性,获取数值属性的元组对应的浮点数(第一浮点数),使用IEEE754标准将浮点数转换为二进制表示。例如,对于浮点数-1.5,其二进制表示为1011111111000000000000000000000;然后将二进制表示转换为整数(第一整数序列),也即将浮点数的二进制表示转换为对应的整数。例如,1011111111000000000000000000000转换为整数-1069547520;接着,计算整数的LSB(最低有效位),即计算-1082130432mod 2,结果为0。然后获取当前元组对应的余数所指示的序列位数,再从水印序列中获取相应序列位数处的字符(单位字符),如果获取的相应序列位数处的字符计算得到的LSB相同,则无需修改;如果不同,则对转换后的整数加1(第一预设数值)后,得到另一个整数(第二整数序列),并将得到的另一个整数转换为浮点数(第二浮点数),从而转化后的浮点数替换数值属性的元组对应的浮点数。
基于此,通过上述过程,将水印嵌入到关系型数据库中的文本属性和数值属性的元组中。对于文本属性,使用两种零宽字符分别表示相应序列位数处的字符,这样不会改变关系型数据库中文本数据的原始外观和含义。而对于数值属性,将水印嵌入到最低有效位(LSB)中,基本没有影响,以此做到无痕水印。
接下来,对水印检出算法进行说明。具体地,水印提取算法的目标是从关系型数据库中提取水印序列。这里,在提取过程中,使用与水印嵌入相同的机制来识别被标记的元组以及水印的嵌入位置。具体地,首先获取水印嵌入时水印序列的长度(W_Length)、用户密钥(Key)、分组数量(E)以及用户设定值N,根据水印序列的长度以及用户设定值,确定分组数量,再基于用户密钥(Key)、分组数量,计算每个元组的余数;接着,根据余数对元组(目标元组)进行排序。具有相同余数的元组将被划分到同一组(目标元组集合);最后,针对每一组元组(目标元组集合),遍历所有元组,从每个元组中提取水印位。
需要说明的是,这里同样每一组元组与水印序列的序列位数存在对应关系,不同组的元组对应的水印序列的序列位数不同,同时,由于元组是根据对应的余数进行划分的,因此,元组对应的余数也即指示了元组对应的水印序列的序列位数。
对于遍历所有元组,从每个元组中提取水印位的过程,如果元组的余数小于e/N(余数阈值),则对该元组(水印元组)进行水印提取,其中,e(余数调节参数)为预先设定的值;同时,这里,在关系型数据库中的元组存两种数据类型,即文本属性和数值属性,因此,遍历元组的属性,针对不同属性的元组,水印提取方式不同。
在一些实施例中,如果当前元组的属性为文本属性,首先由元组哈希值(R_i.H)除以文本属性的元组的目标数据长度(length(R_i.A)-1)后取模得到该元组的水印提取位置(R_i.L)。
需要说明的是,由于文本属性的元组添加完水印后,相应元组的文本数据长度增加了一个位,因此,这里将水印元组的文本数据长度减一,得到目标文本数据长度。
然后,获取当前元组对应的余数所指示的序列位数,如果在水印提取位置(R_i.L)找到零宽字符A,则将水印序列中相应序列位数处的字符映射为1,并将其添加到提取的水印序列(W'(R_i.Mod)),也即前文所述的第二水印序列中。如果在水印提取位置(R_i.L)找到零宽字符B,则将水印序列中相应序列位数处的字符映射为0,并将其添加到提取的水印序列(W'(R_i.Mod))中。
在另一些实施例中,如果当前元组的属性为数值属性,获取数值属性的元组对应的浮点数(第三浮点数),使用IEEE754标准将浮点数转换为二进制表示。例如,对于浮点数-1.5,其二进制表示为1011111111000000000000000000000;然后将二进制表示转换为整数(第三整数序列),也即将浮点数的二进制表示转换为对应的整数。例如,1011111111000000000000000000000转换为整数-1069547520;接着,计算整数的LSB(最低有效位),并将最低有效位,作为水印序列中相应序列位数处的字符(水印字符)。
需要说明的是,由于每一组元组中包括至少一个元组,因此,针对每一组元组,会提取到至少一个字符;又由于每一组元组与水印序列的序列位数存在对应关系,不同的目标元组集合对应的水印序列的序列位数不同,因此,针对每一组元组所对应的序列位数,也会存在至少一个水印字符,从而将至少一个水印字符中出现次数最多的水印字符,确定为每一组元组所对应的序列位数处的字符。
基于此,通过上述过程,提取得到水印序列W'(第二水印序列),然后根据提取的水印序列,以及原始水印图像的宽度(W.Width)和高度(W.Height),还原水印图像。这样,从关系型数据库中的文本属性和数值属性的元组中提取了水印,同时,不需要原始数据,具有较高的实用性和鲁棒性。
如此,通过在数据库中嵌入不可见、不可检测的水印,以实现对数据库内容的版权保护、数据溯源和防篡改等功能。同时,水印嵌入的过程不影响数据库的正常使用和查询,同时也不会引入明显的痕迹,使得攻击者难以发现和破解;而且还可以通过提取水印的方法验证数据库的所有权和完整性。
在实际实施时,通过本申请的技术方案,在保护数据隐私和确保数据安全的前提下,为数据库中的数据添加一种隐形标识,以便在数据泄露或者非法传播的情况下,能够找到到数据的来源和责任方。具体地,通过给数据库中的数据添加水印,可以实现对数据的查询和溯源,从而找到数据泄露的责任方,以实现数据溯源的功能;同时,数据库水印可以在不影响数据正常使用的情况下,为数据增加一层保护,使得非法获取的数据具有可识别性,降低数据泄露的风险,实现数据保护;而且,数据库水印技术可以用于检测数据是否被篡改,确保数据的完整性和一致性,防止数据篡改;此外,通过对数据库中的敏感数据添加水印,不仅可以帮助企业和组织更好地进行数据管理,确保数据的安全和合规性,而且可以提高数据的安全性,防止数据被非法使用。
应用本申请上述实施例,首先获取图像水印对应的第一水印序列,再对数据库中的至少一个元组进行分组,得到至少一个元组集合,然后针对各元组集合,从元组集合包括的至少一个元组中,选取目标元组,接着针对各目标元组,获取所述目标元组归属的元组集合所对应的序列位数,从而基于序列位数,从第一水印序列中获取序列位数处的单位字符,并基于单位字符,添加水印至目标元组。如此,仅在原有的数据上利用单位字符进行轻微修改可以达到无痕、无影响的效果,从而减少对数据库添加水印时对被添加水印的数据的影响。
下面继续说明本申请实施例提供的水印添加装置455的实施为软件模块的示例性结构,参见图2和图7,图7是本申请实施例提供的水印添加装置的结构示意图,如图7所示,存储在存储器450的水印添加装置455中的软件模块可以包括:
第一获取模块4551,用于获取图像水印,并对所述图像水印进行序列转换,得到第一水印序列;
第二获取模块4552,用于获取数据库中的至少一个元组,并对所述至少一个元组进行分组,得到至少一个元组集合;其中,所述元组集合与所述第一水印序列的序列位数存在对应关系,不同的所述元组集合对应的所述第一水印序列的序列位数不同;
选取模块4553,用于针对各所述元组集合,获取所述元组集合包括的各所述元组的元组标识,并结合所述第一水印序列的序列长度以及所述元组标识,从所述元组集合包括的至少一个元组中,选取目标元组;
第三获取模块4554,用于针对各所述目标元组,获取所述目标元组归属的所述元组集合所对应的序列位数;
水印添加模块4555,用于基于所述序列位数,从所述第一水印序列中获取所述序列位数处的单位字符,并基于所述单位字符,添加水印至所述目标元组。
在一些实施例中,所述第二获取模块4552,还用于当所述元组的数量为多个时,获取多个所述元组对应的分组数量,并基于所述分组数量,确定各所述元组对应的余数;基于各所述元组对应的余数,将对应相同余数的所述元组划分为同一组,得到元组集合。
在一些实施例中,所述第二获取模块4552,还用于针对各所述元组执行以下处理:获取水印密钥、以及所述元组的元组标识;将所述水印密钥与所述元组标识进行求和,得到求和结果,并对所述求和结果进行哈希处理,得到所述元组对应的哈希值;将所述哈希值对所述分组数量进行取模处理,得到所述元组对应的余数。
在一些实施例中,所述选取模块4553还用于获取预设的调节参数的参数值,并将所述序列长度与所述调节参数的参数值进行乘积处理,得到分组数量;基于所述分组数量以及各所述元组的所述元组标识,确定各所述元组对应的余数;基于各所述元组对应的余数,从所述元组集合包括的至少一个元组中,选取对应的余数小于余数阈值的元组,并将选取的所述元组,确定为所述目标元组。
在一些实施例中,所述装置还包括确定模块,所述确定模块,用于获取各所述目标元组的数据属性;基于所述目标元组的数据属性,确定所述目标元组的水印添加方式;所述水印添加模块4555,还用于基于所述单位字符,采用对应的水印添加方式,添加水印至所述目标元组。
在一些实施例中,所述数据属性包括文本属性,所述水印添加模块4555,还用于确定文本属性的所述目标元组对应的水印添加位置;获取所述单位字符对应的目标字符,并将所述目标字符插入至所述目标元组中的所述水印添加位置;其中,不同的所述单位字符所对应的目标字符不同。
在一些实施例中,所述水印添加模块4555,还用于获取所述目标元组的哈希值以及所述目标元组的文本数据长度;对所述目标元组的哈希值与所述文本数据长度进行取模处理,得到所述目标元组对应的余数,并基于所述目标元组对应的余数,确定所述目标元组对应的水印添加位置。
在一些实施例中,所述数据属性包括数值属性,所述水印添加模块4555,还用于获取数值属性的所述目标元组对应的第一浮点数,并对所述第一浮点数进行序列转换,得到第一整数序列;获取所述第一整数序列的最低有效位;基于所述最低有效位以及所述单位字符,添加水印至所述目标元组。
在一些实施例中,所述水印添加模块4555,还用于将所述单位字符与所述第一整数序列的最低有效位进行比对,并当比对结果表征所述单位字符与所述最低有效位不同时,对所述第一整数序列加上第一预设数值,得到第二整数序列;对所述第二整数序列进行反序列处理,得到所述第二整数序列对应的第二浮点数,并将所述第一浮点数替换为所述第二浮点数,以实现对数值属性的所述目标元组的水印添加。
在一些实施例中,所述水印添加模块4555,还用于对所述第一浮点数进行二进制转换,得到所述第一浮点数对应的二进制序列,并对所述二进制序列进行十进制转换,得到所述第一整数序列;将所述第一整数序列与第二预设数值进行除法处理,得到余数结果,并将所述余数结果确定为所述第一整数序列的最低有效位。
在一些实施例中,所述装置还包括水印提取模块,所述水印提取模块,用于获取添加水印后的所述数据库中的至少一个目标元组,并对所述至少一个目标元组进行分组,得到至少一个目标元组集合;针对各所述目标元组集合,确定所述目标元组集合中各所述目标元组对应的水印字符,所述水印字符为所述目标元组的水印提取位置处所对应的字符;将至少一个所述水印字符中出现次数最多的水印字符,确定为所述目标元组集合所对应的序列位数处的单位字符;对至少一个所述单位字符进行组合,得到第二水印序列,并获取所述图像水印的图像高度以及图像宽度;基于所述图像高度以及所述图像宽度,对所述第二水印序列进行反序列化处理,得到所述图像水印。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机可执行指令,该计算机可执行指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机可执行指令,处理器执行该计算机可执行指令,使得该电子设备执行本申请实施例上述的水印添加方法。
本申请实施例提供一种存储有计算机可执行指令的计算机可读存储介质,其中存储有计算机可执行指令,当计算机可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的水印添加方法,例如,如图3示出的水印添加方法。
在一些实施例中,计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随即存储器(Random Access Memory,RAM)、可擦写可编程只读存储器(ErasableProgrammable Read-Only Memory,EPROM)、电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,计算机可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,计算机可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,HyperText Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,计算机可执行指令可被部署为在一个电子设备上执行,或者在位于一个地点的多个电子设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行。
综上所述,通过本申请实施例具有以下有益效果:
(1)仅在原有的数据上利用单位字符进行轻微修改可以达到无痕、无影响的效果,从而减少对数据库添加水印时对被添加水印的数据的影响。
(2)通过本申请的技术方案,在保护数据隐私和确保数据安全的前提下,为数据库中的数据添加一种隐形标识,以便在数据泄露或者非法传播的情况下,能够找到到数据的来源和责任方。具体地,通过给数据库中的数据添加水印,可以实现对数据的查询和溯源,从而找到数据泄露的责任方,以实现数据溯源的功能;同时,数据库水印可以在不影响数据正常使用的情况下,为数据增加一层保护,使得非法获取的数据具有可识别性,降低数据泄露的风险,实现数据保护;而且,数据库水印技术可以用于检测数据是否被篡改,确保数据的完整性和一致性,防止数据篡改;此外,通过对数据库中的敏感数据添加水印,不仅可以帮助企业和组织更好地进行数据管理,确保数据的安全和合规性,而且可以提高数据的安全性,防止数据被非法使用。
(3)通过在数据库中嵌入不可见、不可检测的水印,以实现对数据库内容的版权保护、数据溯源和防篡改等功能。同时,水印嵌入的过程不影响数据库的正常使用和查询,同时也不会引入明显的痕迹,使得攻击者难以发现和破解;而且还可以通过提取水印的方法验证数据库的所有权和完整性。
(4)如果由于数据库中某些元组被篡改导致原有的水印字符发生变化时,通过选取出现次数最多的水印字符,作为目标元组集合所对应的序列位数处的单位字符,提高了鲁棒性。
需要说明的是,在本申请实施例中,涉及到获取预先存储于终端本地的图像水印、通过终端的摄像头实时采集图像水印等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (15)

1.一种水印添加方法,其特征在于,所述方法包括:
获取图像水印,并对所述图像水印进行序列转换,得到第一水印序列;
获取数据库中的至少一个元组,并对所述至少一个元组进行分组,得到至少一个元组集合;
其中,所述元组集合与所述第一水印序列的序列位数存在对应关系,不同的所述元组集合对应的所述第一水印序列的序列位数不同;
针对各所述元组集合,获取所述元组集合包括的各所述元组的元组标识,并结合所述第一水印序列的序列长度以及所述元组标识,从所述元组集合包括的至少一个元组中,选取目标元组;
针对各所述目标元组,获取所述目标元组归属的所述元组集合所对应的序列位数;
基于所述序列位数,从所述第一水印序列中获取所述序列位数处的单位字符,并基于所述单位字符,添加水印至所述目标元组。
2.如权利要求1所述的方法,其特征在于,所述对所述至少一个元组进行分组,得到至少一个元组集合,包括:
当所述元组的数量为多个时,获取多个所述元组对应的分组数量,并基于所述分组数量,确定各所述元组对应的余数;
基于各所述元组对应的余数,将对应相同余数的所述元组划分为同一组,得到元组集合。
3.如权利要求2所述的方法,其特征在于,所述基于所述分组数量,确定各所述元组对应的余数,包括:
针对各所述元组执行以下处理:
获取水印密钥、以及所述元组的元组标识;
将所述水印密钥与所述元组标识进行求和,得到求和结果,并对所述求和结果进行哈希处理,得到所述元组对应的哈希值;
将所述哈希值对所述分组数量进行取模处理,得到所述元组对应的余数。
4.如权利要求1所述的方法,其特征在于,所述结合所述第一水印序列的序列长度以及所述元组标识,从所述元组集合包括的至少一个元组中,选取目标元组,包括:
获取预设的调节参数的参数值,并将所述序列长度与所述调节参数的参数值进行乘积处理,得到分组数量;
基于所述分组数量以及各所述元组的所述元组标识,确定各所述元组对应的余数;
基于各所述元组对应的余数,从所述元组集合包括的至少一个元组中,选取对应的余数小于余数阈值的元组,并将选取的所述元组,确定为所述目标元组。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取各所述目标元组的数据属性;
基于所述目标元组的数据属性,确定所述目标元组的水印添加方式;
所述基于所述单位字符,添加水印至所述目标元组,包括:
基于所述单位字符,采用对应的水印添加方式,添加水印至所述目标元组。
6.如权利要求5所述的方法,其特征在于,所述数据属性包括文本属性,所述基于所述单位字符,采用对应的水印添加方式,添加水印至所述目标元组,包括:
确定文本属性的所述目标元组对应的水印添加位置;
获取所述单位字符对应的目标字符,并将所述目标字符插入至所述目标元组中的所述水印添加位置;
其中,不同的所述单位字符所对应的目标字符不同。
7.如权利要求6所述的方法,其特征在于,确定文本属性的所述目标元组对应的水印添加位置,包括:
获取所述目标元组的哈希值以及所述目标元组的文本数据长度;
对所述目标元组的哈希值与所述文本数据长度进行取模处理,得到所述目标元组对应的余数,并基于所述目标元组对应的余数,确定所述目标元组对应的水印添加位置。
8.如权利要求5所述的方法,其特征在于,所述数据属性包括数值属性,所述基于所述单位字符,采用对应的水印添加方式,添加水印至所述目标元组,包括:
获取数值属性的所述目标元组对应的第一浮点数,并对所述第一浮点数进行序列转换,得到第一整数序列;
获取所述第一整数序列的最低有效位;
基于所述最低有效位以及所述单位字符,添加水印至所述目标元组。
9.如权利要求8所述的方法,其特征在于,所述基于所述最低有效位以及所述单位字符,添加水印至所述目标元组,包括:
将所述单位字符与所述第一整数序列的最低有效位进行比对,并当比对结果表征所述单位字符与所述最低有效位不同时,对所述第一整数序列加上第一预设数值,得到第二整数序列;
对所述第二整数序列进行反序列处理,得到所述第二整数序列对应的第二浮点数,并将所述第一浮点数替换为所述第二浮点数,以实现对数值属性的所述目标元组的水印添加。
10.如权利要求8所述的方法,其特征在于,所述对所述第一浮点数进行序列转换,得到第一整数序列,包括:
对所述第一浮点数进行二进制转换,得到所述第一浮点数对应的二进制序列,并对所述二进制序列进行十进制转换,得到所述第一整数序列;
所述获取所述第一整数序列的最低有效位,包括:
将所述第一整数序列与第二预设数值进行除法处理,得到余数结果,并将所述余数结果确定为所述第一整数序列的最低有效位。
11.如权利要求1所述的方法,其特征在于,所述基于所述单位字符,添加水印至所述目标元组之后,所述方法还包括:
获取添加水印后的所述数据库中的至少一个目标元组,并对所述至少一个目标元组进行分组,得到至少一个目标元组集合;
针对各所述目标元组集合,确定所述目标元组集合中各所述目标元组对应的水印字符,所述水印字符为所述目标元组的水印提取位置处所对应的字符;
将至少一个所述水印字符中出现次数最多的水印字符,确定为所述目标元组集合所对应的序列位数处的单位字符;
对至少一个所述单位字符进行组合,得到第二水印序列,并获取所述图像水印的图像高度以及图像宽度;
基于所述图像高度以及所述图像宽度,对所述第二水印序列进行反序列化处理,得到所述图像水印。
12.一种水印添加装置,其特征在于,所述装置包括:
第一获取模块,用于获取图像水印,并对所述图像水印进行序列转换,得到第一水印序列;
第二获取模块,用于获取数据库中的至少一个元组,并对所述至少一个元组进行分组,得到至少一个元组集合;其中,所述元组集合与所述第一水印序列的序列位数存在对应关系,不同的所述元组集合对应的所述第一水印序列的序列位数不同;
选取模块,用于针对各所述元组集合,获取所述元组集合包括的各所述元组的元组标识,并结合所述第一水印序列的序列长度以及所述元组标识,从所述元组集合包括的至少一个元组中,选取目标元组;
第三获取模块,用于针对各所述目标元组,获取所述目标元组归属的所述元组集合所对应的序列位数;
水印添加模块,用于基于所述序列位数,从所述第一水印序列中获取所述序列位数处的单位字符,并基于所述单位字符,添加水印至所述目标元组。
13.一种电子设备,其特征在于,包括:
存储器,用于存储计算机可执行指令;
处理器,用于执行所述存储器中存储的计算机可执行指令时,实现权利要求1至11任一项所述的水印添加方法。
14.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,用于引起处理器执行时,实现权利要求1至11任一项所述的水印添加方法。
15.一种计算机程序产品,包括计算机可执行指令,其特征在于,所述计算机可执行指令被处理器执行时,实现权利要求1至11任一项所述的水印添加方法。
CN202311334754.6A 2023-10-13 2023-10-13 水印添加方法、装置、电子设备、存储介质及程序产品 Pending CN117332385A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311334754.6A CN117332385A (zh) 2023-10-13 2023-10-13 水印添加方法、装置、电子设备、存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311334754.6A CN117332385A (zh) 2023-10-13 2023-10-13 水印添加方法、装置、电子设备、存储介质及程序产品

Publications (1)

Publication Number Publication Date
CN117332385A true CN117332385A (zh) 2024-01-02

Family

ID=89295005

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311334754.6A Pending CN117332385A (zh) 2023-10-13 2023-10-13 水印添加方法、装置、电子设备、存储介质及程序产品

Country Status (1)

Country Link
CN (1) CN117332385A (zh)

Similar Documents

Publication Publication Date Title
CN110245469B (zh) 网页的水印生成方法、水印解析方法、装置及存储介质
CN107180200B (zh) 数据文件可定制化脱敏方法和系统
CN105631355A (zh) 一种数据处理方法和装置
US10127373B1 (en) Systems and methods for distinguishing among human users and software robots
CN105631359A (zh) 一种网页操作的控制方法和装置
KR20150122149A (ko) 컴파일러 기반 난독화 기법
CN105488400A (zh) 一种恶意网页综合检测方法及系统
CN1949780B (zh) 网络留言系统及留言过滤方法
CN104992117A (zh) Html5移动应用程序的异常行为检测方法和行为模型建立方法
JP7077425B2 (ja) クライアントデバイスにおけるサードパーティコンテンツの表示の確認
CN110309631B (zh) 一种编程语言结构混淆处理方法、智能终端及存储介质
US9990487B1 (en) Systems and methods for distinguishing among human users and software robots
CN108319822B (zh) 一种保护网页代码的方法、存储介质、电子设备和系统
Kim et al. Anti-reversible dynamic tamper detection scheme using distributed image steganography for IoT applications
CN113536247B (zh) 一种可溯源信息的具有md5特征手机号码隐式数据水印方法
CN110874456B (zh) 水印嵌入和水印提取方法、装置及数据处理方法
CN107133036A (zh) 一种模块的管理方法及装置
CN114036561A (zh) 信息隐藏、信息获取方法、装置、存储介质及电子设备
CN111222181B (zh) Ai模型的监管方法、系统、服务器及存储介质
CN110990846B (zh) 信息存储方法、设备及计算机可读存储介质
CN108763880B (zh) 文件水印的生成、检测方法以及装置
CN117332385A (zh) 水印添加方法、装置、电子设备、存储介质及程序产品
CN114298882A (zh) Cad数据的水印的嵌入方法、追溯方法以及电子设备
Rastogi et al. Implementation of digital watermarking technique to secure IPR of web application code
CN114121049B (zh) 一种数据处理方法、装置以及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication