提供测试使用的加解密验证工具🔧
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

54 lines
4.3 KiB

package com.fr.password.tool.keys;
import com.fr.password.tool.util.BCECUtil;
import com.fr.password.tool.util.EncodeUtil;
import com.fr.password.tool.util.smx.SM2KeyPair;
import com.fr.password.tool.util.smx.SM2Util;
import junit.framework.TestCase;
import org.bouncycastle.crypto.InvalidCipherTextException;
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
import org.junit.Assert;
import java.io.IOException;
import java.security.InvalidAlgorithmParameterException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.spec.InvalidKeySpecException;
public class SM2KeysHandlerTest extends TestCase {
private String filePath = this.getClass().getClassLoader().getResource("sm2_key.txt").getPath();
public void testGenerate() throws InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchProviderException, IOException, InvalidKeySpecException {
SM2KeyPair sm2KeyPair = SM2KeysHandler.getInstance().generate();
Assert.assertNotNull(sm2KeyPair.getPrivateKeyParameters());
Assert.assertNotNull(sm2KeyPair.getPublicKeyParameters());
String privateKey = SM2KeysHandler.getInstance().privateKey2String(sm2KeyPair.getPrivateKeyParameters());
String publicLey = SM2KeysHandler.getInstance().publicKey2String(sm2KeyPair.getPublicKeyParameters(), sm2KeyPair.getPrivateKeyParameters());
Assert.assertNotNull(privateKey);
Assert.assertNotNull(publicLey);
ECPrivateKeyParameters privateKeyParameters = SM2KeysHandler.getInstance().string2PrivateKey(privateKey);
ECPublicKeyParameters publicKeyParameters = SM2KeysHandler.getInstance().string2PublicKey(publicLey, privateKey);
Assert.assertEquals(privateKeyParameters.getD(), sm2KeyPair.getPrivateKeyParameters().getD());
Assert.assertEquals(EncodeUtil.byte2HexString(publicKeyParameters.getQ().getEncoded(false)), EncodeUtil.byte2HexString(sm2KeyPair.getPublicKeyParameters().getQ().getEncoded(false)));
String systemPrivate = "MzA4MjAxNTEwMjAxMDEwNDIwYzQxYTMyYzRhOWMwMTFhYmE0Yzk2NjA4YjUwMDA1NzllNzA2ZmRmZDA2NDE4NjljNmRjNGJkNDY3MmQ1YWI4ZmEwODFlMzMwODFlMDAyMDEwMTMwMmMwNjA3MmE4NjQ4Y2UzZDAxMDEwMjIxMDBmZmZmZmZmZWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMDAwMDAwMDBmZmZmZmZmZmZmZmZmZmZmMzA0NDA0MjBmZmZmZmZmZWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMDAwMDAwMDBmZmZmZmZmZmZmZmZmZmZjMDQyMDI4ZTlmYTllOWQ5ZjVlMzQ0ZDVhOWU0YmNmNjUwOWE3ZjM5Nzg5ZjUxNWFiOGY5MmRkYmNiZDQxNGQ5NDBlOTMwNDQxMDQzMmM0YWUyYzFmMTk4MTE5NWY5OTA0NDY2YTM5Yzk5NDhmZTMwYmJmZjI2NjBiZTE3MTVhNDU4OTMzNGM3NGM3YmMzNzM2YTJmNGY2Nzc5YzU5YmRjZWUzNmI2OTIxNTNkMGE5ODc3Y2M2MmE0NzQwMDJkZjMyZTUyMTM5ZjBhMDAyMjEwMGZmZmZmZmZlZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmNzIwM2RmNmIyMWM2MDUyYjUzYmJmNDA5MzlkNTQxMjMwMjAxMDFhMTQ0MDM0MjAwMDQ4NjljY2VkZGM0YzI1ZmMzOGQ3MjZkM2QxOTYyZDgzYjkyMTM4ZmU1MWRlNDE3NzZjOTg1ODc5NGJmZDEwOWNkYTBjOWIwNGNkMzY4MDk3YTQ4ZDk0ODhhNzhmMjRiODA2ODA1NWYzNWMyOTk2OWUxZmFkODQ4MTY3MzVjNDUyNQ==";
ECPrivateKeyParameters pri = SM2KeysHandler.getInstance().string2PrivateKey(systemPrivate);
ECPublicKeyParameters pub = BCECUtil.buildECPublicKeyByPrivateKey(pri);
System.out.println(SM2KeysHandler.getInstance().publicKey2String(pub,pri));
}
public void testLoadFromFile() throws IOException, InvalidKeySpecException, NoSuchAlgorithmException, NoSuchProviderException, InvalidCipherTextException {
SM2KeyPair sm2KeyPair = SM2KeysHandler.getInstance().loadFromFile(filePath);
Assert.assertNotNull(sm2KeyPair.getPublicKeyParameters());
Assert.assertNotNull(sm2KeyPair.getPrivateKeyParameters());
String privateKey = SM2KeysHandler.getInstance().privateKey2String(sm2KeyPair.getPrivateKeyParameters());
String publicKey = SM2KeysHandler.getInstance().publicKey2String(sm2KeyPair.getPublicKeyParameters(),sm2KeyPair.getPrivateKeyParameters());
Assert.assertNotNull(privateKey);
Assert.assertNotNull(publicKey);
String plainText = "This is a plain text";
String cipherText = EncodeUtil.byte2Base64(SM2Util.encrypt(sm2KeyPair.getPublicKeyParameters(),plainText.getBytes()));
Assert.assertEquals(plainText,new String(SM2Util.decrypt(sm2KeyPair.getPrivateKeyParameters(),EncodeUtil.base642Byte(cipherText))));
}
}