使用OpenEuler x86_64 实现Bouncycastle SM3哈希功能
一、安装运行环境
-
安装java和maven
sudo yum install java-17-openjdk sudo yum install maven
安装完成后,你就可以在 OpenEuler 上使用 Maven 来管理 Java 项目了。
二、创建项目工程
-
在项目根目录下创建pom.xml文件用于添加Bouncycastle的依赖项。
vi pom.xml
加入内容:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>MySM3Project</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15to18</artifactId>
<version>1.77</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-ext-jdk15to18</artifactId>
<version>1.77</version>
</dependency>
</dependencies>
</project>
- 将源代码放入src/main/java/BC目录下。
sm3_demo.java:
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.security.Security;
public class sm3_demo {
static {
Security.addProvider(new BouncyCastleProvider());
}
private static final String M = "yy_SM3_demo";
public static void main(String[] args) {
SM3Util sm3 = new SM3Util();
// 使用SM3算法对明文进行摘要计算
String digest = sm3.digest(M);
// 输出加密结果
System.out.println("yy_SM3_demo with sm3:" + digest);
}
}
SM3Util.java:
import java.security.Security;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.security.Provider;
import org.bouncycastle.crypto.digests.SM3Digest;
import org.bouncycastle.util.encoders.Hex;
public class SM3Util {
static {
Provider provider = new BouncyCastleProvider();
Security.addProvider(provider);
}
public String digest(String data) {
// 使用SM3算法对明文进行摘要计算
byte[] sm3Digest = new byte[32];
SM3Digest sm3 = new SM3Digest();
byte[] in = data.getBytes();
sm3.update(in, 0, in.length);
sm3.doFinal(sm3Digest, 0);
// 返回摘要的十六进制表示
return Hex.toHexString(sm3Digest);
}
}
-
创建lib文件夹,并将从官网上下载的bcprov-ext-jdk15to18-177.jar和bcprov-jdk15to18-177.jar放入其中。
Bouncycastle官网:https://www.bouncycastle.org/latest_releases.html
三、编译和运行
- 编译
使用mvn系列命令进行编译:
mvn clean install
- 运行
使用命令运行:
java -cp target/classes:target/MySM3Project-1.0-SNAPSHOT.jar:lib/* sm3_demo
- 运行结果