【问题标题】:Need to create DHPublicKey from y, p, g as BigIntegers需要从 y, p, g 创建 DHPublicKey 作为 BigIntegers
【发布时间】:2013-12-26 21:37:49
【问题描述】:

我需要一个 DHPublicKey 来加密一些数据。 因此,我已经获得了所有需要的参数作为 BigIntegers (y, p, g)。 不幸的是,我没有看到从这些适合 DHPublicKey 接口的参数创建公钥对象的直接方法。 有什么想法吗?

【问题讨论】:

    标签: java public-key-encryption diffie-hellman


    【解决方案1】:
        KeyFactory keyFactory;
        KeyPairGenerator kpg;
        DHPublicKey originalDhPubKey, fromSpecsDhPubKey;
        DHPublicKeySpec dhPubKeySpecs;
        KeyPair kp;
        BigInteger p, g, y;
    
        // generate a DH key pair
        kpg = KeyPairGenerator.getInstance("DH");
        kp = kpg.generateKeyPair();
    
        // get the DH public key
        originalDhPubKey = (DHPublicKey) kp.getPublic();
        // get P, G and Y specs
        p = originalDhPubKey.getParams().getP();
        g = originalDhPubKey.getParams().getG();
        y = originalDhPubKey.getY();
    
        // get a DH KeyFactory
        keyFactory = KeyFactory.getInstance("DH");
    
        // create a DHPublicKeySpec with the specs you have
        dhPubKeySpecs = new DHPublicKeySpec(y, p, g);
    
        // get the DHPublicKey
        fromSpecsDhPubKey = (DHPublicKey) keyFactory.generatePublic(dhPubKeySpecs);
    
        // Check that the DH public values are equal
        System.out.println(originalDhPubKey.getY().equals(fromSpecsDhPubKey.getY()));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 2020-10-08
      • 1970-01-01
      • 2020-05-08
      • 2015-08-15
      • 2010-09-09
      相关资源
      最近更新 更多