Skip to content

Commit b6c44db

Browse files
committed
dh 算法
1 parent fc85cab commit b6c44db

File tree

4 files changed

+45
-142
lines changed

4 files changed

+45
-142
lines changed

encryption_algorithm/curve25519.go renamed to encryption_algorithm/curve25519_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import (
77
"golang.org/x/crypto/curve25519"
88
"io"
99
"os"
10+
"testing"
1011
)
1112

12-
func main() {
13+
func Test_curve25519(t *testing.T) {
1314

1415
var Aprivate, Apublic [32]byte
1516
//产生随机数
@@ -26,8 +27,8 @@ func main() {
2627
os.Exit(0)
2728
}
2829
curve25519.ScalarBaseMult(&Bpublic, &Bprivate)
29-
fmt.Println("B私钥", base64.StdEncoding.EncodeToString(Bprivate[:]))
30-
fmt.Println("B公钥", base64.StdEncoding.EncodeToString(Bpublic[:])) //作为椭圆起点
30+
fmt.Println("B私钥", base64.StdEncoding.EncodeToString(Bprivate[:]))
31+
fmt.Println("B公钥", base64.StdEncoding.EncodeToString(Bpublic[:])) //作为椭圆起点
3132

3233
var Akey, Bkey [32]byte
3334

@@ -37,6 +38,6 @@ func main() {
3738
//B的私钥加上A的公钥计算B的key
3839
curve25519.ScalarMult(&Bkey, &Bprivate, &Apublic)
3940

40-
fmt.Println("A交互的KEY", base64.StdEncoding.EncodeToString(Akey[:]))
41-
fmt.Println("B交互的KEY", base64.StdEncoding.EncodeToString(Bkey[:]))
41+
fmt.Println("A交互的KEY", base64.StdEncoding.EncodeToString(Akey[:]))
42+
fmt.Println("B交互的KEY", base64.StdEncoding.EncodeToString(Bkey[:]))
4243
}

encryption_algorithm/dh_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"math/big"
6+
"testing"
7+
)
8+
9+
func TestDh(t *testing.T) {
10+
aP := big.NewInt(509) //素数
11+
aG := big.NewInt(5) //底数g,任选
12+
aS := big.NewInt(123) //随机数
13+
AA := big.NewInt(0).Exp(aG, aS, aP) //// aG^aS mod aP
14+
fmt.Println(AA)
15+
//发给B aG,AA,aP
16+
bS := big.NewInt(456) //随机数
17+
BB := big.NewInt(0).Exp(aG, bS, aP)
18+
fmt.Println(BB)
19+
BK := big.NewInt(0).Exp(AA, bS, aP)
20+
fmt.Println("密钥", BK)
21+
//发给A BB
22+
AK := big.NewInt(0).Exp(BB, aS, aP)
23+
fmt.Println("密钥", AK)
24+
25+
}

encryption_algorithm/x3curve25519.go renamed to encryption_algorithm/x3curve25519_test.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"hash"
1212
"io"
1313
"os"
14+
"testing"
1415
)
1516

1617
var PseronA_KDF_Prefix []byte
@@ -50,7 +51,7 @@ type PseronA struct {
5051
}
5152

5253
//x3dh
53-
func main() {
54+
func Test_x3curve25519(t *testing.T) {
5455
var a PseronA
5556
a.IdentityPri, a.IdentityPub = GetCurve25519KeypPair()
5657
a.SignedPri, a.SignedPub = GetCurve25519KeypPair()
@@ -80,15 +81,15 @@ func main() {
8081

8182
var bKey = bytes.Join([][]byte{b.DH1[:], b.DH2[:], b.DH3[:], b.DH4[:]}, []byte{})
8283

83-
fmt.Println("ADH1", base64.StdEncoding.EncodeToString(a.DH1[:]))
84-
fmt.Println("ADH2", base64.StdEncoding.EncodeToString(a.DH2[:]))
85-
fmt.Println("ADH3", base64.StdEncoding.EncodeToString(a.DH3[:]))
86-
fmt.Println("ADH4", base64.StdEncoding.EncodeToString(a.DH4[:]))
84+
fmt.Println("ADH1", base64.StdEncoding.EncodeToString(a.DH1[:]))
85+
fmt.Println("ADH2", base64.StdEncoding.EncodeToString(a.DH2[:]))
86+
fmt.Println("ADH3", base64.StdEncoding.EncodeToString(a.DH3[:]))
87+
fmt.Println("ADH4", base64.StdEncoding.EncodeToString(a.DH4[:]))
8788

88-
fmt.Println("BDH1", base64.StdEncoding.EncodeToString(b.DH1[:]))
89-
fmt.Println("BDH2", base64.StdEncoding.EncodeToString(b.DH2[:]))
90-
fmt.Println("BDH3", base64.StdEncoding.EncodeToString(b.DH3[:]))
91-
fmt.Println("BDH4", base64.StdEncoding.EncodeToString(b.DH4[:]))
89+
fmt.Println("BDH1", base64.StdEncoding.EncodeToString(b.DH1[:]))
90+
fmt.Println("BDH2", base64.StdEncoding.EncodeToString(b.DH2[:]))
91+
fmt.Println("BDH3", base64.StdEncoding.EncodeToString(b.DH3[:]))
92+
fmt.Println("BDH4", base64.StdEncoding.EncodeToString(b.DH4[:]))
9293

9394
fmt.Println("aKey", base64.StdEncoding.EncodeToString(aKey))
9495
fmt.Println("aKey", base64.StdEncoding.EncodeToString(kdf(aKey)))
@@ -100,12 +101,12 @@ func main() {
100101

101102
for i := 1; i <= 3; i++ {
102103
aSalt := GetCurve25519Key(a.EphemeralPri, b.EphemeralPub)
103-
fmt.Println("计算A的salt第 ",i," 次", base64.StdEncoding.EncodeToString(aSalt[:]))
104-
fmt.Println("计算A的KEY第 ",i," 次", base64.StdEncoding.EncodeToString(Signalkdf(aKey, aSalt, "A")))
104+
fmt.Println("计算A的salt第 ", i, " 次", base64.StdEncoding.EncodeToString(aSalt[:]))
105+
fmt.Println("计算A的KEY第 ", i, " 次", base64.StdEncoding.EncodeToString(Signalkdf(aKey, aSalt, "A")))
105106

106107
bSalt := GetCurve25519Key(b.EphemeralPri, a.EphemeralPub)
107-
fmt.Println("计算B的salt第 ",i," 次", base64.StdEncoding.EncodeToString(bSalt[:]))
108-
fmt.Println("计算B的KEY第 ",i," 次", base64.StdEncoding.EncodeToString(Signalkdf(bKey, bSalt, "B")))
108+
fmt.Println("计算B的salt第 ", i, " 次", base64.StdEncoding.EncodeToString(bSalt[:]))
109+
fmt.Println("计算B的KEY第 ", i, " 次", base64.StdEncoding.EncodeToString(Signalkdf(bKey, bSalt, "B")))
109110
}
110111

111112
}

other/down.go

Lines changed: 0 additions & 124 deletions
This file was deleted.

0 commit comments

Comments
 (0)