dhkeyagreementtest.java

来自「一个java开发的非常全面的关于证书发放」· Java 代码 · 共 55 行

JAVA
55
字号
package net.sourceforge.jcetaglib.test;

import junit.framework.Assert;
import junit.framework.TestCase;
import net.sourceforge.jcetaglib.lib.Crypt;
import net.sourceforge.jcetaglib.lib.DHKeyAgreement;

import java.security.Key;
import java.security.KeyPair;
import java.security.PublicKey;

public class DHKeyAgreementTest extends TestCase {
    private StringBuffer ciphertext = null;
    private StringBuffer plaintext = null;

    public void testAgreement() throws Exception {
        // generate key pairs for both parties
        KeyPair alicekeypair = DHKeyAgreement.generateDHKeyPair();
        KeyPair bobkeypair = DHKeyAgreement.generateDHKeyPair();

        // public key wrapping
        byte[] bytealicekey = DHKeyAgreement.publicKeyToBytes(alicekeypair.getPublic()); // send this to Bob
        byte[] bytebobkey = DHKeyAgreement.publicKeyToBytes(bobkeypair.getPublic()); // send this to Alice

        // receiving public keys ...
        PublicKey alicepub = DHKeyAgreement.bytesToPublicKey(bytealicekey);
        PublicKey bobpub = DHKeyAgreement.bytesToPublicKey(bytebobkey);

        // generate secret session keys for both parties
        Key alicekey = DHKeyAgreement.generateSessionKey(bobpub, alicekeypair.getPrivate(), "AES", 256);
        Key bobkey = DHKeyAgreement.generateSessionKey(alicepub, bobkeypair.getPrivate(), "AES", 256);

        Assert.assertEquals(alicekey, bobkey);

        for (int i = 0; i < RunTest.text.length; i++) {
            // alice encrypts it with her key
            ciphertext = Crypt.encrypt(RunTest.text[i]
                    , alicekey
                    , "AES"
                    , "CBC"
                    , "PKCS7Padding"
                    , null);

            // bob decrypts it with his key
            plaintext = Crypt.decrypt(ciphertext
                    , bobkey
                    , "AES"
                    , "CBC"
                    , "PKCS7Padding");

            Assert.assertEquals(plaintext.toString(), RunTest.text[i].toString());
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?