/ecryhub

encryhub

Primary LanguageGoApache License 2.0Apache-2.0

简介

rsa加密、加签、解密、验签。 公钥加密,私钥解密 私钥加签,公钥解签

当前支持约定:

  1. 私钥获取方式是PKCS8
  2. 分段加密、解密。
  3. 加签使用md5做hash
  4. 加密之后会进行标准被base64编码;同时在进行解密的入参数据,也会先进行标准base64解码

用法

启动

ecryhub -port 应用启动的端口 -pub /path-for-key/pubkey1.txt -pri /path-for-key/prikey1.txt -thirdpub /path-for-key/thirdpubkey1.txt
e.g. ecryhub -port 9090 -pub /Users/tanghc/Documents/pubkey1.txt -pri /Users/tanghc/Documents/prikey1.txt -thirdpub /Users/tanghc/Documents/thirdpubkey1.txt

编译

linux可以编译到:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ecryhub

本机是mac可以直接运行

go build -o ecryhub

http接口说明

  1. 使用application/json的请求方式。请求体为入参的json
  2. 响应的结构为
{
    "ret": 1//int 1标识成功,其他标识失败
    "msg":"error info"// ret不为1时的错误信息。
    "data":{ //业务接口的响应参数

    }
}

加密&加签

对原始字符串进行加密,并且声称签名。当入参noSign为true的时候,不需要生成签名,只进行加密,不传默认为false

入参描述:

参数名 类型 描述
data String 待加密的串
noSign bool noSign为true的时候,不需要生成签名,只进行加密,不传默认为false

响应data描述:

参数名 类型 描述
encryptData String 加密后的串
sign String 生成的签名

e.g.

curl --location --request POST 'http://localhost:9090/encrypt/' --header 'Content-Type: application/json' --data-raw '{"data":"{\"phone\":\"17610911021\",\"voucherStatus\":\"WY\",\"channel\":\"C24\",\"provinceCode\":\"41\",\"readLine\":0,\"dataNum\":10,\"searchCondition\":0}","noSign":true}' 

解密&验签

对加密后的传进行解密,并且验证签名是否合法。当入参sign为空的时候,不进行验签

入参描述:

参数名 类型 描述
encryptData String 待解密的串
sign String 待验签的签名。为空不进行验签。

响应data描述:

参数名 类型 描述
decryptData String 解密后的串

e.g.

curl --location --request POST 'http://localhost:9090/decrypt/' --header 'Content-Type: application/json' --data-raw '{"sign":"QE4S2t26Fgd6hEDqDW88w4CtmEXFdHQoAaAbeFtjmeD17AjQnwtjw0JWNhl3VidccXvc5cyDYmTwufG64FZuyHR6wWQiMck8Q8Iy/NMVUtFQZUhDMPCg6anK6ACQgMz/FiIu+vyrsGVgyu9OJZDk1FtY+AHdKRmYHqCvxaPXjmc=","encryptData":"Qu/d9A329yqTaDfPAEJek/xMutC3jO07wonL/BZsRw9EZiBm3i7gYvXcPUx7kJQTTabJvyybCIjAi9qjgE81VJuwbSwcdsgNakllyYrqDz0gAGPv5hkz5Sk8Idi9wj9wkCBX2RK77pANU5H3j1URA6UjhJnZE0Wlo6WZl6Qwxyo="}'