読者です 読者をやめる 読者になる 読者になる

時計を壊せ

駆け出しWebプログラマーの雑記

JavaでDH鍵交換の初期化ベクトルを生成する

20億のデバイスでDH鍵交換の初期化ベクトルを生成できます。
以下のような具合のJavaコードをCreateDiffieHellmanIv.javaとして保存しましょう。

import java.security.AlgorithmParameterGenerator;
import javax.crypto.spec.DHParameterSpec;

public class CreateDiffieHellmanIv {
    public static void main (String[] args) throws Exception {
        int bitlen = 1024;
        if (args.length == 1) {
            bitlen = Integer.valueOf(args[0]).intValue();
        }
        System.out.println("Generating DiffieHellman initialization vector... " + "bitlen:" + String.valueOf(bitlen));

        AlgorithmParameterGenerator gen = AlgorithmParameterGenerator.getInstance("DH");
        gen.init(bitlen);

        DHParameterSpec spec = (DHParameterSpec)gen.generateParameters().getParameterSpec(DHParameterSpec.class);
        System.out.println("P: " + String.valueOf(spec.getP()));
        System.out.println("G: " + String.valueOf(spec.getG()));
    }
}

コンパイルします。

javac CreateDiffieHellmanIv.java

実行します。

java CreateDiffieHellmanIv

生成されます。

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Generating DiffieHellman initialization vector... bitlen:1024
P: 145092357773036288785759831358363532457242150558361433565637207115514679411584100914869369530346476337051157705709858973344162440367967367833131503361926409583294585834757269998763188665426891871955393171079827134223234474237577100562967866893704671731464827466258191400928247383857555225260521584462646243757
G: 12076877650358872723433720596980214708516091408794486767543845481119286250958515342123571307476546309975921911735092979287081062213826767342459759424622360942234980320288127473825416480708591619721965721848952913500501787074997260325092958513471288533670082527450298168344704575797601113639175082590501897125

べんり。