图片水印可以帮助您保护企业图片的版权、防止图片泄露等。在使用图片水印时,您需要将SASE提供的图片水印SDK嵌入到业务服务器。在发生信息泄露时,可以通过水印信息定位出泄露人员。本文介绍如何使用图片水印功能。
当前支持在图片上嵌入明水印和暗水印。
如果嵌入的是明水印,可以直接在图片上看到明水印信息,定位泄露人员。
如果嵌入的是暗水印,无法通过肉眼直接看到暗水印信息,所以您需要在SASE控制台上提取暗水印信息,然后定位出泄露人员。要求用于嵌入和提取的图片时长大于1秒(10秒以上效果最佳)。
而大部分发生信息泄露或者版权纠纷等都是暗水印场景。
操作流程
前提条件
已购买图片水印服务。具体信息,请参见数字水印计费概述。
在业务服务器上嵌入图片水印SDK
操作准备
已存在一台基于X86架构的Linux服务器。该服务器用于部署图片水印SDK。
步骤一:下载图片水印SDK
登录办公安全平台控制台。
在左侧导航栏,选择
。在嵌入服务页面,单击图片水印操作列下载SDK。
将图片水印压缩包下载到本地。当前只支持Java语言。
下载的SDK压缩包中包含如下内容:
watermark-normalimage-v1.0.12.jar:集成水印的SDK包,需要添加到Maven仓库。
normalImageLinuxDemo:水印的Demo,您可以通过Demo进行体验。
单击AK/SK信息列的图标,复制AK和SK信息并保存到本地。
步骤二:集成SDK
添加jar包依赖(maven)。
mvn install:install-file -Dfile=watermark-normalimage-v1.0.12.jar -DgroupId=com.aliyun.security.sase -DartifactId=watermark-normalimage -Dversion=v1.0.12 -Dpackaging=jar
pom.xml 添加依赖
<dependency> <groupId>com.aliyun.security.sase</groupId> <artifactId>watermark-normalimage</artifactId> <version>v1.0.12</version> <scope>compile</scope> </dependency> <dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> <version>5.13.0</version> </dependency>
接口调用。
初始化接口。
/** * 初始化 ak sk * @param appKey 应用密钥Key * @param secret 应用密钥Secret * @param useLocalConfig 是否使用本地配置 0:远程配置(需要联网) 1:本地配置 */ WaterMarkNormalImageUtils.init(appKey, secret, useLocalConfig);
图片添加水印到目标文件。
WaterMarkNormalImageUtils.init(appKey, secret); ParamsFile paramsFile = new ParamsFile(); //源文件路径:图片类型支持jpeg、png、tiff、bmp、webp paramsFile.setSrcFilePath(src); //水印,长度为10进制字符串,大小为0-4294967295 paramsFile.setWatermarkbitsStr("212121"); //使用场景:0.通用图像水印(默认) 1.超大尺寸缩放的图像水印 2.超大图尺寸场景 3.大图设计图场景 paramsFile.setParaPtr(0); //取值范围为 [0, 4],推荐值为 2或者3。更大的值意味着更高的鲁棒性,但是视觉质量会下降 paramsFile.setLevel(2); //期望的输出图像jpeg压缩质量因子,取值范围 [10, 100],默认值 95 paramsFile.setJpeg_quality(95); //目标文件路径 paramsFile.setDestFilePath(dest); /** * 添加水印到图片 * @param baseParam * @return * @throws NormalImageException errorCode 异常码 errorMessage 异常信息 参考《错误码》 * @throws IOException */ WaterMarkNormalImageUtils.waterMarkIntoImage(paramsFile);
图片添加水印到字节数组。
//直接字节数组添加水印 ParamsBytes paramsBytes = new ParamsBytes(); //源文件字节:图片类型支持jpeg、png、tiff、bmp、webp paramsBytes.setSrcFileBytes(srcFileBytes); //水印,长度为10进制字符串,大小为0-4294967295 paramsBytes.setWatermarkbitsStr("212121"); //使用场景:0.通用图像水印(默认) 1.超大尺寸缩放的图像水印 2.超大图尺寸场景 3.大图设计图场景 paramsBytes.setParaPtr(0); //取值范围为 [0, 4],推荐值为 2或者3。更大的值意味着更高的鲁棒性,但是视觉质量会下降 paramsBytes.setLevel(2); //期望的输出图像jpeg压缩质量因子,取值范围 [10, 100],默认值 95 paramsBytes.setJpeg_quality(90); //源文件字节:图片类型支持jpeg、png、tiff、bmp、webp paramsFile.setSrcFilePath(src); /** * 添加水印到图片 * @param baseParam * @return * @throws NormalImageException errorCode 异常码 errorMessage 异常信息 参考《错误码》 * @throws IOException */ byte[] destFileBytes = WaterMarkNormalImageUtils.waterMarkIntoImage(paramsBytes);
错误码
错误码 | 描述 |
null_parameters | 存在为空的参数 |
wrong_parameters | embed错误参数 |
jvm_error | embed java虚拟机错误 |
jni_exception | JNI初始化出错(Office03版水印特有的错误),需检查POI引用是否冲突/出错、JDK版本、系统环境 |
wrong_fileFormat | 文件格式错误 |
imgDecodeError | 图片解码错误 |
imgSizeError | 图片大小错误 |
embedException | 嵌入过程出现异常 |
embedExceptionUnKnow | 嵌入未知错误 |
invalid_carrier | 不合法的载体或参数有误 |
embed_success | 嵌入成功 |
extract_success | 提取成功 |
extract_fail | 提取失败 |
extract_id_exceed | 提取 |
extract_exception | 提取异常 |
ossp_error_code_success | SDK功能执行正常 |
ossp_error_code_invalid_param | SDK加载使用了无效参数 |
ossp_error_code_fail_to_download_config | SDK下载配置失败 |
ossp_error_code_fail_to_read_config | SDK读取配置失败 |
ossp_error_code_invalid_config | SDK无效配置 |
ossp_error_code_unauthorized_device | 未授权设备 |
ossp_error_code_liscence_expired | 许可证过期 |
ossp_error_code_config_mismatch | SDK配置不匹配 |
ossp_error_code_unauthorized_api | SDK功能接口未授权 |
ossp_error_code_invalid_session_id | SDK无效sessionId |
ossp_error_code_api_not_implemented | SDK调用接口未实现 |
ossp_error_code_unknown | SDK未知错误 |
提取暗水印信息
已获取嵌入暗水印信息的外泄图片。
步骤一:创建提取任务
登录办公安全平台控制台。
在左侧导航栏,选择
。单击创建提取任务,在创建提取服务面板,参考如下说明配置提取文件。
配置项
说明
水印版本
根据购买的水印版本选择。
水印类型
选择图片水印。
嵌入水印信息位宽
设置水印信息的位宽,位宽需要与透明水印底图的SDK位宽(默认为32位)保持一致。
上传待提取水印文件
根据界面提示,上传获取到的泄露文件。
单击确定。
创建成功后,会在提取服务页面显示创建的任务信息。
步骤二:查看提取结果
水印任务创建完成,待提取成功后,查看提取结果,获取暗水印原文。
在提取服务页面,单击提取信息列展示。
在展开的信息中,您可以提取到暗水印原文(十进制数字)。
溯源定位泄露人员
将提取的暗水印原文和您业务中使用的映射服务或者自定义的映射表进行对应,从而定位出具体的泄露人员。
例如,您提取的暗水印原文是123456,映射表中123456对应的是张三,则定位出泄露人员是员工张三。