首页 > 其他分享 >使用OpenEuler x86_64 实现Bouncycastle SM4加解密功能

使用OpenEuler x86_64 实现Bouncycastle SM4加解密功能

时间:2024-03-30 23:22:06浏览次数:33  
标签:Bouncycastle x86 java SM4 org new byte out String

使用OpenEuler x86_64 实现Bouncycastle SM4加解密功能

一、安装运行环境

  • 安装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>MySM4Project</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目录下。

sm4_demo.java:

import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.security.Security;

public class sm4_demo {
    static {
        Security.addProvider(new BouncyCastleProvider());
    }

    public static void main(String[] args) {
        String plaintext = "yy_SM4_demo:hello";
        String key = SM4Util.generateRandomKey();

        // 加密
        String ciphertext = new SM4Util().encrypt(plaintext, key);

        // 输出加密结果
        System.out.println("CipherText: " + ciphertext);

        // 解密
        String decryptedText = new SM4Util().decrypt(ciphertext, key);

        // 输出解密结果
        System.out.println("PlainText: " + decryptedText);
    }
}

SM4Util.java:

import org.bouncycastle.crypto.engines.SM4Engine;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.util.encoders.Hex;
import org.bouncycastle.util.encoders.Base64;

import java.security.SecureRandom;

public class SM4Util {
    // 生成随机密钥的方法
    public static String generateRandomKey() {
        byte[] keyBytes = new byte[16]; // 128位密钥
        SecureRandom random = new SecureRandom();
        random.nextBytes(keyBytes);
        return Base64.toBase64String(keyBytes);
    }

    public String encrypt(String data, String key) {
        byte[] keyBytes = Base64.decode(key);
        byte[] in = data.getBytes();
        byte[] out = new byte[in.length];

        // 初始化SM4引擎
        SM4Engine engine = new SM4Engine();
        engine.init(true, new KeyParameter(keyBytes));

        // 加密数据
        engine.processBlock(in, 0, out, 0);

        // 返回加密后的密文
        return Hex.toHexString(out);
    }

    public String decrypt(String cipherText, String key) {
        byte[] keyBytes = Base64.decode(key);
        byte[] in = Hex.decode(cipherText);
        byte[] out = new byte[in.length];

        // 初始化SM4引擎
        SM4Engine engine = new SM4Engine();
        engine.init(false, new KeyParameter(keyBytes));

        // 解密数据
        engine.processBlock(in, 0, out, 0);

        // 返回解密后的明文
        return new String(out);
    }
}
  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. 运行结果

标签:Bouncycastle,x86,java,SM4,org,new,byte,out,String
From: https://www.cnblogs.com/yuanyi23/p/18106237

相关文章

  • 使用OpenEuler x86_64 实现Bouncycastle SM3哈希功能
    使用OpenEulerx86_64实现BouncycastleSM3哈希功能一、安装运行环境安装java和mavensudoyuminstalljava-17-openjdksudoyuminstallmaven安装完成后,你就可以在OpenEuler上使用Maven来管理Java项目了。二、创建项目工程在项目根目录下创建pom.xml文件......
  • 使用OpenEuler x86_64 实现Bouncycastle SM2加解密
    使用OpenEulerx86_64实现BouncycastleSM2加解密一、安装运行环境安装java和mavensudoyuminstalljava-17-openjdksudoyuminstallmaven安装完成后,你就可以在OpenEuler上使用Maven来管理Java项目了。二、创建项目工程在项目根目录下创建pom.xml文件用......
  • 20211105BouncyCastle
    1.下载jar包https://www.bouncycastle.org/latest_releases.html找了半天在官网上没找到,是找的其他的csdn的网页二级标题将下载的两个jar包拷贝到%JAVA_HOME%\jre\lib\ext目录下面3.修改配置文件%JAVA_HOME%\jre\lib\security\java.security,在末尾添加security.provider.11......
  • bouncycastle
    把下载的安装包放在%JAVA_HOME%\jre\lib\ext目录下面修改配置文件%JAVA_HOME%\jre\lib\security\java.security,在末尾添加security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider;具体如下:导入jar包demo.java点击查看代码importorg.bouncycastle.j......
  • X86架构与ARM架构的区别:
    原文链接:https://zhidao.baidu.com/question/208949741393495605.html?qbl=relate_question_11、含义不同:X86使用CISC(ComplexInstructionSetComputer,复杂指令集计算机)。ARM使用RISC(ReducedInstructionSetComputer,精简指令集计算机),ARM英文全称AdvancedRISCMachine。2、......
  • Xcode开发iOS运行项目报错symbol(s) not found for architecture x86_64的解决办法
    写在前边的话:如果是xcode13,那么请先升级系统到Monterey(ios12.7.4),并安装xcode14。因为好多sdk都是xcode14才有的,xcode13不支持,任你把buildsetting玩出花来都没用的。Xcode13的时候,各种报错百度搜索解决方法,各种配置buildsettings,然而没有什么用,真机/模拟器都是一一直报错。......
  • kernel BUG at arch/x86/kernel/apic/vector.c:174!
    问题兆芯设备适配ngrayos系统(debian系统4.20.1内核)时,在网口up时系统崩溃。版本如下:现象:经过排查,原因是因为兆芯设备启动参数加了noapic(不加系统无法正常刻录和启动),网口up时中断向量不够分配。APIC(AdvancedProgrammableInterruptController)是一种硬件设备,用于处......
  • Hadoop与Spark的x86和ARM混合集群部署【环境搭建篇】
    ​笔者在完成课程设计时,突然想到把大数据框架同时部署到PC端虚拟机以及ARM架构的Linux板上,这篇博客记录集群部署流程以及例程测试。部署架构如下图:若下文与架构图冲突,则以架构图为准。运行环境:PC方面,使用两台Ubuntu20.04LTSFocalFossa虚拟机ARM板子则使用香橙派5(R......
  • 发布 VectorTraits v2.0(支持 x86的Sse系列指令集等)
    目录支持x86的Sse系列指令集为Vector128/Vector256补充全部的向量方法提供CPU型号信息结果范例1:X86CPUonWindows结果范例2:ArmCPUonLinux结果范例3:ArmCPUonMacOS提供所支持的指令集信息结果范例1:X86CPUonWindows结果范例2:ArmCPUonLinux结果范例3:Arm......
  • 安装JDK11+Tomcat10.0.1+eclipse-jee-2023-12-R-win32-x86_64 配置
    第一步,先双击启动软件:改一下名称:C:\Users\Administrator\eclipse-workspace变成:C:\ProgramFiles\JavaJava:为什么JSP文件要放到SpringBoot工程的src/main/webapp目录下参考文章:https://blog.csdn.net/netyeaxi/article/details/100928105为了看到更具体的页面,可以做个性化......