获取AES密钥接口
获取AES密钥接口
该接口用于获取AES密钥,使用RSA加密解密,并存储到数据库中。
请求参数
- Request-Aes-Key-Id: 请求头,用于标识请求。
- aesKey: 请求参数,使用RSA公钥加密后的AES密钥。
返回参数
- Code: 200表示成功,其他表示失败。
- Data: 生成的AES密钥ID。
代码示例
Go代码
// 处理获取aes key请求
if r.Header.Get('Request-Aes-Key-Id') != '' {
//conn := a.pool.Get()
//defer conn.Close()
cr, err := NewRsa1(base64Decode(priKey), base64Decode(pubKey), PKCS1) //按理来说不能多次使用
if err != nil {
rw.WriteHeader(500)
rw.Write([]byte('RSA密钥错误'))
return
}
r.ParseForm()
keybase64 := r.Form.Get('aesKey')
//body, _ := ioutil.ReadAll(r.Body)
keyDecrypted, err := cr.Decrypt(base64Decode(keybase64))
if err != nil {
rw.WriteHeader(500)
rw.Write([]byte('AES密钥解密失败'))
return
}
id := uuid.NewUUID()
if err := a.client.Insert(&dao.AesId{Key: 'gateway:clientAESKey:' + id, Value: string(keyDecrypted), Time: time.Now().Unix()}); err != nil {
log.WithoutContext().Errorln(err)
}
//conn.Do('SET', 'gateway:clientAESKey:'+id, keyDecrypted, 'EX', 3600*24*30)
rw.Header().Set('Content-Type', 'application/json')
rw.Write([]byte(jsonutil.MarshalToString2(RespBody{
Code: 200,
Data: id,
})))
return
}
Java代码
// 处理获取aes key请求
if (r.getHeader('Request-Aes-Key-Id') != null) {
try {
Rsa1 cr = new Rsa1(base64Decode(priKey), base64Decode(pubKey), PKCS1);
String keybase64 = r.getParameter('aesKey');
byte[] keyDecrypted = cr.decrypt(base64Decode(keybase64));
String id = UUID.randomUUID().toString();
a.getClient().insert(new AesId('gateway:clientAESKey:' + id, new String(keyDecrypted), System.currentTimeMillis() / 1000));
rw.setHeader('Content-Type', 'application/json');
rw.getWriter().write(jsonutil.MarshalToString2(new RespBody(200, id)));
} catch (Exception e) {
rw.setStatus(500);
rw.getWriter().write('RSA密钥错误');
}
return;
}
原文地址: https://www.cveoy.top/t/topic/pg9G 著作权归作者所有。请勿转载和采集!