【问题标题】:How to use jbenchx to change the int of my rsa key size encryption如何使用 jbenchx 更改我的 rsa 密钥大小加密的 int
【发布时间】:2019-02-07 07:52:33
【问题描述】:

我试图让我们 jbenchx 对不同的加密方法进行基准测试,但我无法让 @ForEachInt 命令正常工作

import java.security.GeneralSecurityException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Security;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

import org.jbenchx.annotations.Bench;
import org.jbenchx.annotations.ForEachInt;

public class keyGen {


public KeyPair generateKeyPair(@ForEachInt({112,196,256}) int size) throws GeneralSecurityException {
    KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA", "BC");
    keyPairGen.initialize(size);
    return keyPairGen.generateKeyPair();
}

    @Bench
    public Object createkey() throws GeneralSecurityException {
    Security.addProvider(new BouncyCastleProvider());
    KeyPair RSA = generateKeyPair();
    return RSA;
}
}
}

我尝试过仅使用 keyPairGen.initialize 运行单独的方法,但它也不起作用。谁能告诉我我的错误

【问题讨论】:

    标签: java eclipse junit benchmarking key-pair


    【解决方案1】:

    @ForEachInt-command 只为每个int-value 执行测试,例如代码:

    import org.jbenchx.annotations.*;
    public class Main {
        @Bench
        public int[] doSomething(@ForEachInt({ 20, 10, 30, 10 }) int size) {
            return new int[size];
        }
    }
    

    给出以下输出:

    Initializing Benchmarking Framework...
    Running on Windows 7 6.1
    Max heap = 3784310784 System Benchmark = 0,83ns
    Performing 4 benchmarking tasks..
    [0] Main.doSomething(20)****!********** 16,3ns
    [1] Main.doSomething(10)**********  16,6ns
    [2] Main.doSomething(30)****!************   17,1ns
    [3] Main.doSomething(10).*.***.***  16,5ns
    Success.
    

    可以看到,@ForEachInt-statement 有四个int-values,因此执行了四个测试。 http://iquadrat.github.io/jbenchx/ 显示了一个类似的示例。

    你的代码有两个缺陷:

    1. 代码无法编译,因为在createkey()-方法内部调用的generateKeyPair()-方法没有定义(定义的generateKeyPair(int)-方法有一个int-参数,因此具有不同的签名)。
    2. @ForEachInt-command 必须在标有@Bench-annotatioan 的方法中使用,即createKey()

    修改代码如下:

    import java.security.GeneralSecurityException;
    import java.security.KeyPair;
    import java.security.KeyPairGenerator;
    import java.security.Security;
    import org.bouncycastle.jce.provider.BouncyCastleProvider;
    import org.jbenchx.annotations.Bench;
    import org.jbenchx.annotations.ForEachInt;
    public class keyGen {
        private KeyPair generateKeyPair(int size) throws GeneralSecurityException {
            KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA", "BC");
            keyPairGen.initialize(size);
            return keyPairGen.generateKeyPair();
        }
        @Bench
        public Object createkey(@ForEachInt({ 112, 196, 256 }) int size) throws GeneralSecurityException {
            Security.addProvider(new BouncyCastleProvider());
            KeyPair RSA = generateKeyPair(size);
            return RSA;
        }
    }
    

    那么输出变成:

    Initializing Benchmarking Framework...
    Running on Windows 7 6.1
    Max heap = 3784310784 System Benchmark = 0,84ns
    Performing 3 benchmarking tasks..
    [0] keyGen.createkey(112)!!!!!!!!!!.!.!!!!!!!!!!!!.!!.!!!..!!!*!!..*..*...* 952us
    [1] keyGen.createkey(196)!!!!!..*....*...*  1.94ms
    [2] keyGen.createkey(256)!!!!!!!!*.*!!*.*.*!.*.*!*.**.****. 2.88ms
    Success.
    

    【讨论】:

      猜你喜欢
      • 2014-02-21
      • 2012-06-26
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多