为了账号安全,请及时绑定邮箱和手机立即绑定

在两个微服务golang之间发送和读取[]字节

在两个微服务golang之间发送和读取[]字节

Go
慕田峪9158850 2021-04-03 18:19:13
我有一个返回[]字节的数据加密功能。当然,必须在另一个微服务中(通过另一个功能)解密已加密的内容。当我[]byte通过JSON发送via时,会产生问题:将[]byte转换为字符串,然后当我通过调用读取JSON时,结果不再相同。我必须能够[]byte通过JSON传递由加密功能创建的original ,或者[]byte像下面在下面看到的那样传递一次调用。另一种可能性是更改解密功能,但我没有成功。来电功能func Dati_mono(c *gin.Context) {   id := c.Param("id")   oracle, err := http.Get("http://XXXX/"+id)   if err != nil {       panic(err)   }   defer oracle.Body.Close()   oJSON, err := ioutil.ReadAll(oracle.Body)   if err != nil {       panic(err)   }   oracleJSON := security.Decrypt(oJSON, keyEn)   c.JSON(http.StatusOK, string(oJSON))}用url调用的函数func Dati(c *gin.Context) {    var (       person Person       result mapstring.Dati_Plus       mmap []map[string]interface{}    )    rows, err := db.DBConor.Query("SELECT COD_DIPENDENTE, MATRICOLA, COGNOME FROM ANDIP021_K")    if err != nil {       fmt.Print(err.Error())    }    for rows.Next() {       err = rows.Scan(&person.COD_DIPENDENTE, &person.MATRICOLA, &person.COGNOME)       ciao := structs.Map(&person)       mmap = append(mmap, ciao)    }    defer rows.Close()    result = mapstring.Dati_Plus{       len(mmap),        mmap,    }    jsonEn := []byte(mapstring.Dati_PlustoStr(result))    keyEn := []byte(key)    cipherjson, err := security.Encrypt(jsonEn, keyEn)    if err != nil {       log.Fatal(err)    }    c.JSON(http.StatusOK, cipherjson)}加密和解密功能func Encrypt(json []byte, key []byte) (string, error) {    k, err := aes.NewCipher(key)    if err != nil {       return "nil", err    }    gcm, err := cipher.NewGCM(k)    if err != nil {       return "nil", err    }    nonce := make([]byte, gcm.NonceSize())    if _, err = io.ReadFull(rand.Reader, nonce); err != nil {       return "nil", err    }return gcm.Seal(nonce, nonce, json, nil), nil        }一切正常,当我打印的问题是创建cipherjson于c.JSON ():在[]byte被转换成字符串。在被调用函数读取并读取时,它被读取为字符串,并且ioutil.ReadAll()创建读取字符串的[]字节。相反,我必须能够将被调用函数中使用的Encrypt函数的返回值传递给Decryot函数。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 288 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信