序言
对于开发平台接口提供者,需要一些机制,保证对外接口调用的安全性,一般两种方案
- MD5加密
- RSA加密
接口设计
- 入参
请求id:用来区分请求
sysCode: 系统唯一标识
timestamp:时间戳 ,用来检验接口一定时间以内可通过,超过时间,算失效
signType:签名类型 1-MD5 2-RSA
sign:签名内容,与服务侧按照一定规则,加密后值是否一致
content:请求内容
- 校验逻辑
//MD5 伪代码
//先判断入参时间戳与当前时间相隔是否大于5分钟
currentTime-timestamp>5
//获取公钥
secret=sysService.getSecretBySysCode(sysCode);
//按照传参的参数先后顺序进行拼接
String str="sysCode="+sysCode+"×tamp="+timestamp+"&content="+content+"&secret=" + secret;
//加密后服务侧签名
String serviceSign =DigestUtils.md5Hex(str)
//比较服务侧与入参的签名是否一致
if (!sign.equals(serviceSign)) {
//验签失败
}
//RSA 伪代码
逻辑同上,唯一不同的是,入参sign是私钥加密,到服务侧公钥解密,进行比对
- AES秘钥生成
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
- RSA秘钥对生成
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
每天不断更,精彩不停止,明天见,我是行者
记得留个关注、点赞、评论哟,让我们一起去看星辰大海,品味代码人生
本文暂时没有评论,来添加一个吧(●'◡'●)