java实现sm4加密
时间: 2023-08-25 19:15:52 浏览: 123
下面是Java实现SM4加密的示例代码:
```java
import org.bouncycastle.crypto.engines.SM4Engine;
import org.bouncycastle.crypto.params.KeyParameter;
import java.nio.charset.StandardCharsets;
import java.security.Security;
public class SM4Test {
public static void main(String[] args) {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
byte[] key = "0123456789abcdef".getBytes(StandardCharsets.UTF_8);
byte[] plainText = "Hello, world!".getBytes(StandardCharsets.UTF_8);
SM4Engine engine = new SM4Engine();
engine.init(true, new KeyParameter(key));
byte[] cipherText = new byte[plainText.length];
engine.processBlock(plainText, 0, cipherText, 0);
System.out.println(new String(cipherText, StandardCharsets.UTF_8));
}
}
```
这里使用了 Bouncy Castle 库提供的 SM4 实现。首先需要添加 Bouncy Castle 作为 Java Security Provider,然后使用 SM4Engine 进行加密操作。在实例化 SM4Engine 时需要传入一个 boolean 类型的参数,表示加密还是解密。然后使用 KeyParameter 类封装密钥,调用 processBlock 方法进行加密操作,将输出结果存储在给定的 cipherText 数组中。最后将加密后的密文转换为字符串输出。
阅读全文