云服务器内容精选
-
密文解密过程 对密文进行BASE64解码。 byte[] encryptStr = Base64.getDecoder().decode(data); 使用AESKey进行解密。 Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); SecretKeySpec secretKey = new SecretKeySpec(加密密钥.getBytes(StandardCharsets.UTF_8), "AES"); cipher.init(2, secretKey); byte[] bytes = cipher.doFinal(encryptStr); 去掉rand_msg头部的16个随机字节,剩余的部分即为明文内容msg。 String dataStr = StringUtils.split(new String(bytes, StandardCharsets.UTF_8), "&")[1];
-
签名校验/加解密术语 表1 术语 术语 说明 signature 消息签名,用于验证请求是否来自 OneAccess ,以防攻击者伪造。签名算法为HMAC-SHA256 + Base64。 AESKey AES算法的密钥,加密算法为AES/GCM/NoPadding + Base64。 msg 明文消息体,格式为JSON。 encrypt _msg 明文消息msg加密处理并进行Base64编码后的密文。
-
明文加密过程 拼接明文字符串。明文字符串由16个字节的随机字符串、明文msg拼接组成,中间使用&进行连接。以下为Java语言示例: String dataStr = RandomStringUtils.random(16, true, false) + "&" + data; 对拼接后的明文字符串使用AESkey加密后,再进行Base64编码,获得密文encrypt_msg。以下为Java语言示例: Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); SecretKeySpec secretKey = new SecretKeySpec(加密密钥.getBytes(StandardCharsets.UTF_8), "AES"); cipher.init(1, secretKey); byte[] bytes = dataStr.getBytes(StandardCharsets.UTF_8); String ecnryptStr = Base64.getEncoder().encodeToString(cipher.doFinal(bytes));
-
签名校验 为了让企业应用确认事件推送来自OneAccess,OneAccess将事件推送给企业应用回调服务时,请求body体中包含请求签名并以参数signature标识,企业应用需要验证此参数的正确性后再解密,验证步骤如下: 计算签名。 计算签名由签名密钥、Nonce值(nonce)、时间戳(timestamp)、事件类型(eventType)、消息体(data)5部分组成,中间使用&进行连接。采用HMAC-SHA256 + Base64算法进行加密。以下为Java语言签名示例: String message = nonce + "&" + timestamp + "&" + eventType + "&" + data; Mac mac = Mac.getInstance("HmacSHA256"); SecretKeySpec secretKey = new SecretKeySpec(签名密钥.getBytes(StandardCharsets.UTF_8), "HmacSHA256"); mac.init(secretKey); String newSignature = Base64.getEncoder().encodeToString(mac.doFinal(message.getBytes(StandardCharsets.UTF_8))); 比较计算的签名cal_signature与请求参数signature是否相等,相等则表示验证通过。 企业应用按照要求返回响应消息格式。
-
响应参数 表2 响应参数 参数 参数类型 描述 code String 返回code码,200表示成功,失败错误码请参考公共返回码。 message String 响应结果说明。 data String 当未开启加密时,返回请求包体中的明文随机字符串。 当开启加密时,对请求包体中加密的随机字符串进行解密,返回重新加密的该随机字符串的值,需要解密得到消息内容,解密后有random、msg二个字段,其中msg即为明文消息内容。
-
请求参数 表1 请求参数 参数 参数类型 描述 nonce String 随机数,与timestamp结合使用,用于防止请求重放攻击。 timestamp Integer 时间戳,与nonce结合使用,用于防止请求重放攻击。 eventType String 事件类型,此处事件类型为CHECK_URL。 data String 消息体,当未开启加密时,发送明文的随机字符串; 当开启加密时,发送加密的随机字符串,需要解密得到消息内容,解密后有random、msg二个字段,其中msg即为明文消息内容。 signature String 消息签名,signature计算结合企业应用填写的签名密钥(signatureSaltValue)、请求中的timestamp、nonce、加密的消息体。
-
请求示例 未启用消息签名和加密的请求示例: {"nonce": "bqVHvThFGooCRjSf","timestamp": 1573784783795,"eventType": "CHECK_URL","data": "random string","signature": ""} 启用消息签名和加密的请求示例: {"nonce": "jmgjjEAJbrMzWmUw","timestamp": 15093849585,"eventType": "CHECK_URL","data": "jRqGWO08Tyuxq+ChqGFk7SiPCt6MgcUDvzP5CBYnD30=","signature": "K08yDiTEc094KoccOY+VYLQFxxQ="}
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格