使用RSA解密AES密钥并存储到数据库
// Go语言代码示例 //conn := a.pool.Get() //defer conn.Close() cr, err := NewRsa(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', 36002430)
rw.Header().Set('Content-Type', 'application/json') rw.Write([]byte(jsonutil.MarshalToString2(RespBody{ Code: 200, Data: id, }))) return
// Java语言代码示例 // JedisPool pool = a.pool; // Jedis conn = pool.getResource(); // try { // Rsa cr = new Rsa(base64Decode(priKey), base64Decode(pubKey), PKCS1); //按理来说不能多次使用 // String keybase64 = r.getParameter('aesKey'); // byte[] keyDecrypted = cr.decrypt(base64Decode(keybase64)); // String id = UUID.randomUUID().toString(); // if (a.client.insert(new AesId('gateway:clientAESKey:' + id, new String(keyDecrypted), System.currentTimeMillis())) != null) { // System.out.println('gateway:clientAESKey:' + id + ' inserted successfully'); // } // rw.setHeader('Content-Type', 'application/json'); // rw.getWriter().write(JsonUtil.toJson(new RespBody(200, id))); // } catch (Exception e) { // rw.setStatus(500); // rw.getWriter().write('RSA密钥错误'); // } finally { // conn.close(); // }
原文地址: https://www.cveoy.top/t/topic/phhz 著作权归作者所有。请勿转载和采集!