使用OpenEuler x86_64 实现Bouncycastle SM3哈希功能

使用OpenEuler x86_64 实现Bouncycastle SM3哈希功能

一、安装运行环境

  • 安装java和maven

     sudo yum install java-17-openjdk
     sudo yum install maven
    

    安装完成后,你就可以在 OpenEuler 上使用 Maven 来管理 Java 项目了。

二、创建项目工程

  1. 在项目根目录下创建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>
  1. 将源代码放入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);
    }
}
  1. 创建lib文件夹,并将从官网上下载的bcprov-ext-jdk15to18-177.jar和bcprov-jdk15to18-177.jar放入其中。

    Bouncycastle官网:https://www.bouncycastle.org/latest_releases.html

三、编译和运行

  1. 编译

使用mvn系列命令进行编译:

    mvn clean install

  1. 运行

使用命令运行:

   java -cp target/classes:target/MySM3Project-1.0-SNAPSHOT.jar:lib/* sm3_demo
  1. 运行结果

posted @ 2024-03-30 22:14  20211423袁艺  阅读(16)  评论(0编辑  收藏  举报