当前位置:   article > 正文

Linux下Pypbc库的安装及其使用_pypbc库安装

pypbc库安装

1.安装GMP库和PBC库

安装过程可以参考我之前的文章,附上链接:Ubuntu中安装PBC库_Frinklin_wang的博客-CSDN博客

2.安装Pypbc库

给上pbc官网网址:PBC Library - Pairing-Based Cryptography - Downloads (stanford.edu)

去官网找到pypbc的下载安装包的网址如下图:

 点击进入到github对应的链接,然后再终端输入如下命令,下载pypbc相关文件:

git clone https://github.com/debatem1/pypbc

下载完后,可以看到有一个install文件,这个文件里面是官方给出的下载pypbc的方法。

然后进入到pypbc的文件下面,如果命令:

sudo pip3 install

如果没有下载pip3,请自行下载;如果出现错误如下:

ERROR: Invalid requirement: '/home/wmc/Downloads/pypbc/install'

请输入命令:

  1. pip3 install .../pypbc/ //.../pypbc/代表你的pypbc下载的路径
  2. 例如我的是:
  3. pip3 install /home/wmc/Downloads/pypbc/

安装成功后会出现新的文件如下图:

 3.下载Pycharm

首先去官网下载linux安装包,安装好后解压。

然后在终端输入命令:

  1. cd pycharm-community-2022.1/bin/
  2. ./pycharm.sh

 就可以开始安装了,安装步骤省略。

设置好自己习惯的模式,然后选择新建一个项目:

 这里要选择使用自己的编辑环境:

 

 

 当看到有外部库中包含了Pypbc的库的时候,证明pypbc库依赖是已经导入成功了

最后进行代码测试,将下面代码粘贴到main.py中:(附上我的测试代码)

  1. #! /usr/bin/env python3
  2. """
  3. test.py
  4. Written by Geremy Condra
  5. Licensed under GPLv3
  6. Released 11 October 2009
  7. """
  8. import unittest
  9. from pypbc import *
  10. stored_params = """type a
  11. q 8780710799663312522437781984754049815806883199414208211028653399266475630880222957078625179422662221423155858769582317459277713367317481324925129998224791
  12. h 12016012264891146079388821366740534204802954401251311822919615131047207289359704531102844802183906537786776
  13. r 730750818665451621361119245571504901405976559617
  14. exp2 159
  15. exp1 107
  16. sign1 1
  17. sign0 1
  18. """
  19. from pypbc import *
  20. import hashlib
  21. import time
  22. from random import sample
  23. import numpy as np
  24. Hash1 = hashlib.sha256
  25. Hash2 = hashlib.sha256
  26. params = Parameters(qbits=512, rbits=160) # type a
  27. pairing = Pairing(params)
  28. # 返回公共参数,PEKS是对称双线性对,G1=G2,二者的生成元是一样的,G2同样可以替换为G1
  29. qbits=512
  30. rbits=160
  31. g = Element.random(pairing, G1)
  32. sk = Element.random(pairing, Zr)
  33. pk = Element(pairing, G1, g ** sk)
  34. U = Element.random(pairing, G1)
  35. x1 = Element.random(pairing, G1)
  36. x2 = Element.random(pairing, Zr)
  37. z = Element(pairing, G1, value=x1 **x2)
  38. # this is a test for the BLS short signature system
  39. params = Parameters(param_string=stored_params)
  40. pairing = Pairing(params)
  41. # build the common parameter g
  42. g = Element.random(pairing, G2)
  43. # build the public and private keys
  44. private_key = Element.random(pairing, Zr)
  45. public_key = Element(pairing, G2, value=g**private_key)
  46. print("private_key = " , private_key)
  47. print("public_key = " , public_key)
  48. # set the magic hash value
  49. hash_value = Element.from_hash(pairing, G1, "hashofmessage")
  50. # create the signature
  51. signature = hash_value**private_key
  52. # build the temps
  53. temp1 = Element(pairing, GT)
  54. temp2 = Element(pairing, GT)
  55. # fill temp1
  56. temp1 = pairing.apply(signature, g)
  57. #fill temp2
  58. temp2 = pairing.apply(hash_value, public_key)
  59. print(temp1)
  60. print(temp2)
  61. # and again...
  62. temp1 = pairing.apply(signature, g)
  63. if(temp1 == temp2):
  64. print("true")
  65. else:
  66. print("false")
  67. # compare to random signature
  68. rnd = Element.random(pairing, G1)
  69. temp1 = pairing.apply(rnd, g)
  70. def compare(self):
  71. # compare
  72. self.assertEqual(temp1 == temp2, False)
  73. print(self.assertEqual(temp1 == temp2, False))

 如果成功运行了,证明安装成功!

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/980798
推荐阅读
相关标签
  

闽ICP备14008679号