这是一段使用 Java 语言实现从文本读取 SM2 公钥,生成 PublicKey 对象的代码示例:
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
public class SM2PublicKeyExample {
public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeySpecException {
// 读取 SM2 公钥文本
String sm2PublicKeyText = "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEXAMPLEPUBLICKEY==";
// 将 SM2 公钥文本进行 Base64 解码
byte[] sm2PublicKeyBytes = Base64.getDecoder().decode(sm2PublicKeyText);
// 创建 X509EncodedKeySpec 对象
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(sm2PublicKeyBytes);
// 获取 KeyFactory 对象
KeyFactory keyFactory = KeyFactory.getInstance("SM2");
// 生成 PublicKey 对象
java.security.PublicKey publicKey = keyFactory.generatePublic(keySpec);
}
}
在上面的代码中,首先读取了 SM2 公钥的文本。然后使用 Base64 解码器将 SM2 公钥文本解码为字节数组。接着创建了 X509EncodedKeySpec 对象,该对象是用来封装 SM2 公钥的字节数组的。接下来,通过调用 KeyFactory 类的 getInstance() 方法来获取 KeyFactory 对象,并使用 generatePublic() 方法将 X509EncodedKeySpec 对象转换为 PublicKey 对象。