如何在Linux(Ubuntu 22)服务器上运行jpbc库
创始人
2025-01-18 15:03:28
0

准备工作

  1. 一台云服务器,可以使用华为云,可以免费领取一个月使用(本人已经领取了两次),领取的时候系统选择Ubuntu 22
  2. 本地需要准备的软件:XShell 7、Xftp
  3. 下载jpbc库所需的jar包

云服务器中操作

  1. 已经领取或者购买的服务器,复制公网IP在这里插入图片描述
  2. 打开XShell 7,连接云服务器
    • 新建
      在这里插入图片描述
    • 主机名填写刚刚复制的公网IP地址,名称随便写,点击连接
      在这里插入图片描述
    • 弹出以下对话框,输入登录的用户名root,记住用户名,点击确定
      在这里插入图片描述
    • 弹出输入密码的对话框,输入领取云服务器时设置的密码,忘记了可以到官网控制台重置,记住密码,点击确定
      在这里插入图片描述
    • 终端显示以下内容说明连接成功
      在这里插入图片描述
  3. 下载jdk,下载过程中判断[y/n]就输入y
sudo apt update sudo apt install openjdk-11-jdk 
  1. 下载完毕检查java版本来验证一下,能够显示具体的版本号即安装成功
java -version 

在这里插入图片描述

  1. 在JPBC库官网点击下载下载以下压缩包,本地解压以jar包
    在这里插入图片描述
    在这里插入图片描述
    直接使用7-zip进行提取
    在这里插入图片描述

  2. 在我们连接的窗口这里,打开xftp的图标
    在这里插入图片描述

  3. 打开xftp,左边为本地,右边为云服务器,在右边右键新建文件夹 repository
    在这里插入图片描述
    所有jar包选择拖到右边,这里右边多了一个opencsv.jar的jar包,用来将数据写入csv表格的

在这里插入图片描述

至此,运行jpbc库的工作准备完毕

代码运行

  1. 在本地idea编辑好代码,这里使用官方给的BLS01做演示
import it.unisa.dia.gas.crypto.jpbc.signature.bls01.engines.BLS01Signer; import it.unisa.dia.gas.crypto.jpbc.signature.bls01.generators.BLS01KeyPairGenerator; import it.unisa.dia.gas.crypto.jpbc.signature.bls01.generators.BLS01ParametersGenerator; import it.unisa.dia.gas.crypto.jpbc.signature.bls01.params.BLS01KeyGenerationParameters; import it.unisa.dia.gas.crypto.jpbc.signature.bls01.params.BLS01Parameters; import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; import org.bouncycastle.crypto.AsymmetricCipherKeyPair; import org.bouncycastle.crypto.CipherParameters; import org.bouncycastle.crypto.CryptoException; import org.bouncycastle.crypto.digests.SHA256Digest;  public class BLS01 {     public BLS01() {                }                 public BLS01Parameters setup() {                    BLS01ParametersGenerator setup = new BLS01ParametersGenerator();                     setup.init(PairingFactory.getPairingParameters("a.properties"));                     return setup.generateParameters();                }               public AsymmetricCipherKeyPair keyGen(BLS01Parameters parameters) {                    BLS01KeyPairGenerator keyGen = new BLS01KeyPairGenerator();                    keyGen.init(new BLS01KeyGenerationParameters(null, parameters));                     return keyGen.generateKeyPair();                }                 public byte[] sign(String message, CipherParameters privateKey) {                    byte[] bytes = message.getBytes();                     BLS01Signer signer = new BLS01Signer(new SHA256Digest());                    signer.init(true, privateKey);                    signer.update(bytes, 0, bytes.length);                     byte[] signature = null;                    try {                            signature = signer.generateSignature();                        } catch (CryptoException e) {                            throw new RuntimeException(e);                        }                    return signature;                }                 public boolean verify(byte[] signature, String message, CipherParameters publicKey) {                    byte[] bytes = message.getBytes();                     BLS01Signer signer = new BLS01Signer(new SHA256Digest());                    signer.init(false, publicKey);                    signer.update(bytes, 0, bytes.length);                     return signer.verifySignature(signature);                }                public static void main(String[] args) {                   BLS01 bls01 = new BLS01();                    // Setup                   AsymmetricCipherKeyPair keyPair = bls01.keyGen(bls01.setup());                    // Test same message                   String message = "Hello World!";                   System.out.println((bls01.verify(bls01.sign(message, keyPair.getPrivate()), message, keyPair.getPublic())));                    // Test different messages                   System.out.println((bls01.verify(bls01.sign(message, keyPair.getPrivate()), "Hello Italy!", keyPair.getPublic())));               }  }  

该方案用的是A曲线,需要新建a.properties这样一个文件,用于对称的双线性映射

type a q 8780710799663312522437781984754049815806883199414208211028653399266475630880222957078625179422662221423155858769582317459277713367317481324925129998224791 h 12016012264891146079388821366740534204802954401251311822919615131047207289359704531102844802183906537786776 r 730750818665451621361119245571504901405976559617 exp2 159 exp1 107 sign1 1 sign0 1  

如果是非对称的双线性映射则使用F曲线,新建一个f.properties的文件

type f q 205523667896953300194896352429254920972540065223 r 205523667896953300194895899082072403858390252929 b 40218105156867728698573668525883168222119515413 beta 115334401956802802075595682801335644058796914268 alpha0 191079354656274778837764015557338301375963168470 alpha1 71445317903696340296199556072836940741717506375  
  1. 左边切换到代码所在的目录,右边新建javaTest目录并进入,将java 代码和曲线文件都拖到右边
    在这里插入图片描述
    java代码和曲线文件一定要在同一目录
    在这里插入图片描述
  2. 运行代码,回到XShell,切换到代码所在目录,执行以下命令,先用javac编译
javac -cp ~/repository/*:. BLS01.java 

ls查看,有一个BLS01.class文件,编译成功
在这里插入图片描述
执行运行命令,得到结果

java -cp ~/repository/*:. BLS01 

在这里插入图片描述

  • 后续更新如何使用opencsv.

相关内容

热门资讯

攻略辅助!德州私人局怎么透视,... 攻略辅助!德州私人局怎么透视,wejoker辅助软件视频,解迷教程(竟然有挂)该软件可以轻松地帮助玩...
必知教程!微乐小程序黑科技,7... 必知教程!微乐小程序黑科技,789大菠萝可以控制吗,积累教程(真的有挂)1、上手简单,内置详细流程视...
步骤辅助!竞技联盟破解版最新版... 步骤辅助!竞技联盟破解版最新版,hhpoker免费透视脚本,推荐教程(发现有挂)1、让任何用户在无需...
分享给玩家!创思维激k辅助工具... 分享给玩家!创思维激k辅助工具,约局吧辅助器,讲义教程(有挂总结)该软件可以轻松地帮助玩家将创思维激...
妙招辅助!德扑之心免费透视,w... 妙招辅助!德扑之心免费透视,wepoker怎么开辅助,辅助教程(有挂工具)1、玩家可以在德扑之心免费...
玩家必备教程!皮皮游戏辅助平台... 玩家必备教程!皮皮游戏辅助平台,朱雀开心罗松怎么开挂,资料教程(有挂透视)1、皮皮游戏辅助平台脚本辅...
总结辅助!hhpoker是正品... 总结辅助!hhpoker是正品吗,aapoker透视怎么用,解谜教程(有挂实锤)1)aapoker透...
今日重大通报!微信广东雀神挂件... 今日重大通报!微信广东雀神挂件辅助,随意玩辅助器,指南教程(有挂教学)1.微信广东雀神挂件辅助 选牌...
资料辅助!wepoker有辅助... 资料辅助!wepoker有辅助工具吗,wepoker软件安装包,教你教程(竟然有挂)小薇(辅助器软件...
实测分享!广西友乐免费辅助,新... 实测分享!广西友乐免费辅助,新荣耀辅助软件,指南书教程(有挂规律)1、玩家可以在广西友乐免费辅助透视...