0

システムに El-Gamal 暗号化アルゴリズムを実装しようとしています。私はアルゴリズムについて学び、それを実装するためのアイデアを得るためにインターネットでコードを調べました。インターネットで次のコードを見つけたところ、この奇妙なエラーが発生しました。

Exception in thread "main" java.lang.IllegalArgumentException:'min' may not be greater than 'max'
    at org.bouncycastle.util.BigIntegers.createRandomInRange(Unknown Source)

    at org.bouncycastle.crypto.generators.DHKeyGeneratorHelper.calculatePrivate(Unknown Source)

    at org.bouncycastle.crypto.generators.ElGamalKeyPairGenerator.generateKeyPair(Unknown Source)
    at org.bouncycastle.jcajce.provider.asymmetric.elgamal.KeyPairGeneratorSpi.generateKeyPair(Unknown Source)
    at ElGamal.main(ElGamal.java:20)

コード セグメントは次のとおりです。

 import java.security.Key;
 import java.security.KeyPair;
 import java.security.KeyPairGenerator;
 import java.security.SecureRandom;
 import java.security.Security;

 import javax.crypto.Cipher;

 public class ElGamal {
    public static void main(String[] args) throws Exception {
      Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

      byte[] input = "abcdefgh".getBytes();
      Cipher cipher = Cipher.getInstance("ElGamal/None/NoPadding", "BC");
      KeyPairGenerator generator = KeyPairGenerator.getInstance("ElGamal", "BC");
      SecureRandom random = new SecureRandom();

      generator.initialize(128, random);

      KeyPair pair = generator.generateKeyPair();
      Key pubKey = pair.getPublic();
      Key privKey = pair.getPrivate();
      cipher.init(Cipher.ENCRYPT_MODE, pubKey, random);
      byte[] cipherText = cipher.doFinal(input);
      System.out.println("cipher: " + new String(cipherText));

      cipher.init(Cipher.DECRYPT_MODE, privKey);
      byte[] plainText = cipher.doFinal(cipherText);
      System.out.println("plain : " + new String(plainText));
  }
}

私は暗号化に非常に慣れていないため、これはおそらくばかげています。質問があまりにもばかげている場合は申し訳ありません。そして、前もって感謝します。

4

1 に答える 1