1 Star 1 Fork 0

凡卡/libp2parea

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
dh.go 1.03 KB
一键复制 编辑 原始数据 按行查看 历史
凡卡 提交于 2023-11-29 11:01 . first commit
// Package crypto provides 迪菲-赫尔曼密钥交换
// http://zh.wikipedia.org/wiki/%E8%BF%AA%E8%8F%B2%EF%BC%8D%E8%B5%AB%E5%B0%94%E6%9B%BC%E5%AF%86%E9%92%A5%E4%BA%A4%E6%8D%A2
package crypto
import (
"errors"
"math/big"
"github.com/monnand/dhkx"
)
type DH struct {
dhGroup *dhkx.DHGroup
dhPriv *dhkx.DHKey
ch chan string
}
func NewDH() (*DH, error) {
g, err := dhkx.GetGroup(1)
if err != nil {
return nil, err
}
priv, err := g.GeneratePrivateKey(nil)
if err != nil {
return nil, err
}
dh := &DH{
dhGroup: g,
dhPriv: priv,
ch: make(chan string, 10),
}
return dh, nil
}
func (dh *DH) ComputeKey(public string) ([]byte, error) {
publicInt, ok := big.NewInt(0).SetString(public, 10)
if !ok {
//大数构成错误
return nil, errors.New("Large numbers constitute errors")
}
pub := dhkx.NewPublicKey(publicInt.Bytes())
k, err := dh.dhGroup.ComputeKey(pub, dh.dhPriv)
if err != nil {
return nil, err
}
return k.Bytes(), nil
}
func (dh *DH) PrivKey() string {
return dh.dhPriv.String()
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/prestonTao/libp2parea.git
git@gitee.com:prestonTao/libp2parea.git
prestonTao
libp2parea
libp2parea
3aaa451ef873

搜索帮助