我在Go中使用了方法。我想发送我的data(kyber.scalar)与套接字编程,并可以阅读其他程序。当我阅读时,我不能再次转换为kyber.scalar类型。
这是我发送的代码
r := suite.Scalar()
r.Mul(x, c_scl).Sub(v, r)
r_by, err := r.MarshalBinary()
_, err = connection.Write(r_by)
defer connection.Close()这是我的阅读代码
buffer5 := make([]byte, 1024)
mLen5, err := connection.Read(buffer5)
if err != nil {
fmt.Println("Error reading:", err.Error())
}
r := buffer5[:mLen5]
rG := suite.Point().Mul(r, G_pt)问题所在。
不能使用r(类型[]字节)作为suite.Curve.Point().Mul参数中的kyber.Scalar类型:[]字节不实现kyber.Scalar (缺少添加方法)
如何修复,或者是否有一种将字节转换为kyber.scalar的推荐方法?
发布于 2022-05-11 18:23:41
如果您正在使用go.dedis.ch/kyber,那么下面是实现预期目标的一些方法
使用SetBytes
suite := suites.MustFind("Ed25519")
a := suite.Scalar().Pick(suite.RandomStream())
a_by, err := a.MarshalBinary()
if err != nil {
log.Fatal("...")
}
// New Scalar
b := suite.Scalar()
b.SetBytes(a_by)suite := suites.MustFind("Ed25519")
a := suite.Scalar().Pick(suite.RandomStream())
buf := bytes.Buffer{}
suite.Write(&buf, &a)
var c kyber.Scalar
bufBytes := buf.Bytes()
if err := suite.Read(bytes.NewBuffer(bufBytes), &c); err != nil {
log.Fatal("...")
}https://stackoverflow.com/questions/72198678
复制相似问题