Skip to main content

spwatermark

水印

### 1.设置水印

curl -i -k  -H "Content-type: application/json" -X POST -d '{"tabname":"dbname:t_order","keyid":100,"watermark":{"content":"","mobile":""}}'
http://localhost:8030/SetWatermark

tabname:表名,注意只有在授权了加密的字段上,才可以设置水印,脱敏...
如果授权时的表名按dbname:tabname填,这里要一致
所有要求所有接口中涉及表名的参数都需要按照dbname:tabname格式填,虽然单填tabname也可以兼容(强烈不推荐,调试错误很困难)

keyid:kms用户id
watermark:需要添加的水印,填字段名即可,值不用填,服务端随机生成
返回:
{
code:0,
。。。
}

1.设置水印

post: /SetWatermark
{"tabname":"dbname:t_order",
"watermarks":[{
"fieldname":"mobile",
"watermark":"2f453c5d",
"marktype":"AddSuffix(#32)"
},
{
"fieldname":"content",
"watermark":"2f453c5d",
"marktype":"AddSuffix(#32)"
}
]}

fieldname:要添加水印的字段名,表对应的字段被初始化以后即可设置,与用户无关
watermark:该字段要设置的水印编码,用二进制表示,
比如水印编码是32位int,hex(BigEndian(int32))=如:2f453c5d,64位int,hex(BigEndian(int64))=如:2f453c5d2f453c5d,
这样就能知道此水印的长度
如果设置的是空字符串"",则proxy输出不添加水印
marktype:添加水印方式
暂时固定用AddSuffix(#32),参数#32表示内容末尾添加空格

返回成功:{code:0}
返回错误:{code:100,message:"..."}

2.删除水印

//清除表dbname:t_order 所有字段水印设置
curl http://localhost:8030/DelWatermark/dbname:t_order

3.删除全部水印

curl http://localhost:8030/DelWatermark

4.获取水印

curl get http://localhost:8030/ListWatermark/dbname:t_order/mobile
返回对字段mobile设置了水印的所有用户
{
tabname:dbname:t_order,
field:mobile,
watermarks:[
{
keyid:101,
watermark:111sdfjskjfsdkfss
},
{
keyid:107,
watermark:11assssasasasasa
}]
}
LS 水印
curl get http://localhost:8030/ListWatermark/dbname:t_order
返回表dbname:tabname中所有设置水印的字段
返回成功:
{
"tabname":"dbname:tabname",
"watermarks":[
{
"fieldname":"mobile",
"watermark":"2f453c5d",
"marktype":"AddSuffix(#32)"
}
{
"fieldname":"content",
"watermark":"2f453c5d",
"marktype":"AddSuffix(#32)"
}
]

返回错误:
{
code:100
message:"..."
}

5.水印码进行rs编码

curl get http://localhost:8030/RsEncode/a52378d6
a52378d6水印原始编码,对应设置接口中的 "watermark":"2f453c5d",
返回:rs编码字符串
{
"code":0,
"data":"010a0502000800050e05070f06080c00020307080b0f03080103070406070d0c030d0601070b0209020102040c010b0d"
}

6.水印解码

curl get http://localhost:8030/RsDecode/010a0502000800050e05070f06080c00020307080b0f03080103070406070d0c030d0601070b0209020102040c010b0d
010a050200...... 是溯源后的结果,比如48个最大(0-15)的数,用二进制表示成字符串

返回水印原始编码
{
"code":0,
"data":"a52378d6"
}

将溯源后的结果解码为SetWatermark接口中对应的 "watermark""2f453c5d"
可以匹配到属于那个用户

7.写入word水印

curl post http://localhost:8030/WriteDOCMark/010a0502000800050e05070f06080c00020307080b0f03080103070406070d0c030d0601070b0209020102040c010b0d

将需要写入水印的word文件内容提交到上面这个URL

010a050200...... 是水印编码经过rs编码后的字符串

返回加完水印后的内容字节流

注意 因为加水印时间比较长所有超时时间设置长点,3分钟以上.

8.读取word水印

curl post http://localhost:8030/ReadDOCMark/48

将需要提取水印的word文件内容提交到上面这个URL

48表示水印编码长度.int32填48 int64填96

返回
{
"code":0,
"markcode":"010a0502000800050e05070f06080c00020307080b0f03080103070406070d0c030d0601070b0209020102040c010b0d"
}
markcode 需要进行rs解码才能得到水印编码