用已知的sm2公钥加密数据的Java代码
时间: 2023-12-14 14:38:55 浏览: 89
以下是使用已知的SM2公钥加密数据的Java代码示例:
```java
import org.bouncycastle.crypto.engines.SM2Engine;
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
import org.bouncycastle.crypto.params.ParametersWithRandom;
import org.bouncycastle.crypto.util.PublicKeyFactory;
import java.security.Security;
public class SM2EncryptionExample {
public static void main(String[] args) throws Exception {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
// 假设这是SM2公钥的字节数组
byte[] publicKeyBytes = ...
// 将字节数组转换为ECPublicKeyParameters对象
ECPublicKeyParameters publicKeyParameters = (ECPublicKeyParameters) PublicKeyFactory.createKey(publicKeyBytes);
// 待加密的数据
byte[] data = "Hello, SM2!".getBytes();
// 创建SM2加密引擎
SM2Engine engine = new SM2Engine();
// 使用公钥初始化加密引擎
engine.init(true, new ParametersWithRandom(publicKeyParameters));
// 加密数据
byte[] encryptedData = engine.processBlock(data, 0, data.length);
System.out.println("Encrypted data: " + new String(encryptedData));
}
}
```
需要注意的是,上述示例代码中使用了Bouncy Castle作为安全提供程序。如果您的Java环境中没有安装Bouncy Castle,您需要手动下载并添加到Java的安全提供程序列表中。
阅读全文