📄 dhkeyagreementtest.java
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -