golang github.com/Nik-U/pbc使用前windows配置
windows安装pbc
1.安装mingw64
(可以尝试跳过这个步骤,在msys中直接安装mingw64-gcc具体自己查)
下载地址mingw64
建议不使用在线安装。下载后直接解压,建议不要放在有空格的目录,我自己有报错无法识别Program Files (x86)这个目录,只能识别到Program。
配置环境变量,将D:\mingw64\bin添加到Path中。
2.安装msys
下载地址msys
下载后放在mingw目录下直接解压。
这边也将D:\mingw64\msys\local\bin添加到Path中,因为后面编译成功的libgmp-10.dll和libpbc-1.dll在其中。当然你也可以设置编译输出地址来更改,我都是默认输出。
3.编译GMP
参考windows环境下的gmp大数运算库的配置(visual studio 2019 + gmp-6.2.0 + msys)
步骤几乎一样。
1、检测gcc
2、下载gmp的源码
下载地址gmp
3、编译gmp
1.将下载好的gmp压缩包放在D:\mingw64\msys\home\14230中
2.运行msys.bat
3.输入如下命令
tar -xvf gmp-6.2.1.tar.xz
cd ./gmp-6.2.1
./configure --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --disable-static --enable-shared
make
make check
make install
这个编译过程较长。最后出现如参考中一样的图就可以了。
3.编译PBC
1.下载PBC源码
下载地址PBC
2.将源码压缩包放入D:\mingw64\msys\home\14230中
3.在msys中输入如下命令
tar -xvf pbc-0.5.14.tar.gz
cd ./pbc-0.5.14
./configure LDFLAGS="-LD:/mingw64/msys/local/lib -lgmp" CPPFLAGS="-ID:/mingw64/msys/local/include" --disable-static --enable-shared
make
//make check
make install
LDFLAGS其实就是找libgmp.a文件的位置,CPPFLAGS是gmp.h的目录。可以安装everything去查找。在D:\mingw64\msys\local\bin目录中出现libpbc-1.dll。
4.配置golang
在环境变量中添加CGO_CPPFLAGS=-ID:\mingw64\msys\local\include和CGO_LDFLAGS=-LD:\mingw64\msys\local\lib分别对应的就是pbc编译时添加的。
5.测试
go get ithub.com/Nik-U/pbc
```go
package main
import (
"fmt"
"github.com/Nik-U/pbc"
)
func main() {
// 生成Pairing参数
params := pbc.GenerateA(160, 512)
// 创建Pairing对象
pairing := pbc.NewPairing(params)
// 生成G1和G2群的元素
g1 := pairing.NewG1().Rand()
g2 := pairing.NewG2().Rand()
// 计算双线性配对结果
e := pairing.NewGT().Pair(g1, g2)
// 输出结果
fmt.Println("g1 =", g1)
fmt.Println("g2 =", g2)
fmt.Println("e(g1, g2) =", e)
}