SM4加密

这篇具有很好参考价值的文章主要介绍了SM4加密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SM4加密方法,可以通过传递需要加密的明文和密钥来进行调用:

import org.bouncycastle.crypto.engines.SM4Engine;
import org.bouncycastle.crypto.modes.CBCBlockCipher;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.crypto.params.ParametersWithIV;
import org.bouncycastle.util.encoders.Hex;

import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;

public class SM4Encryption {

    // 加密方法
    public static String encrypt(String plaintext, String key) {
        byte[] iv = new byte[16];
        new SecureRandom().nextBytes(iv);

        byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8);
        byte[] plaintextBytes = plaintext.getBytes(StandardCharsets.UTF_8);

        CBCBlockCipher cbcBlockCipher = new CBCBlockCipher(new SM4Engine());
        ParametersWithIV parameters = new ParametersWithIV(new KeyParameter(keyBytes), iv);

        cbcBlockCipher.init(true, parameters);

        byte[] ciphertextBytes = new byte[cbcBlockCipher.getOutputSize(plaintextBytes.length)];
        int outputLength = cbcBlockCipher.processBytes(plaintextBytes, 0, plaintextBytes.length, ciphertextBytes, 0);
        try {
            cbcBlockCipher.doFinal(ciphertextBytes, outputLength);
        } catch (Exception e) {
            e.printStackTrace();
        }

        byte[] ivAndCiphertextBytes = new byte[iv.length + ciphertextBytes.length];
        System.arraycopy(iv, 0, ivAndCiphertextBytes, 0, iv.length);
        System.arraycopy(ciphertextBytes, 0, ivAndCiphertextBytes, iv.length, ciphertextBytes.length);

        return Hex.toHexString(ivAndCiphertextBytes);
    }

    // 调用示例
    public static void main(String[] args) {
        String plaintext = "Hello, world!";
        String key = "0123456789abcdef0123456789abcdef";

        String ciphertext = encrypt(plaintext, key);

        System.out.println("Plaintext: " + plaintext);
        System.out.println("Ciphertext: " + ciphertext);
    }
}

在这个示例中,我们使用了Bouncy Castle加密库来实现SM4加密。该方法使用了CBC模式,并使用随机生成的IV来增强安全性。我们将IV和密文组合成一个字节数组,并将其转换为十六进制字符串以便于输出和传输。

要使用此方法,请将上面的代码复制到Java文件中,然后在需要调用的地方使用encrypt()方法,并提供要加密的明文和密钥。例如,在main()方法中,我们将Hello, world!作为明文,将0123456789abcdef0123456789abcdef作为密钥,并打印出加密后的密文。文章来源地址https://www.toymoban.com/news/detail-513527.html

到了这里,关于SM4加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SM4加密

    SM4加密方法,可以通过传递需要加密的明文和密钥来进行调用: 在这个示例中,我们使用了Bouncy Castle加密库来实现SM4加密。该方法使用了CBC模式,并使用随机生成的IV来增强安全性。我们将IV和密文组合成一个字节数组,并将其转换为十六进制字符串以便于输出和传输。 要使

    2024年02月11日
    浏览(35)
  • sm2签名与sm4加密(一)

    因为某些不可抗原因,友商加密平台系统无法提供接口进行加密验签,以至于需要自己实现监管要求的加密验签。 接口要求,报文先经过sm2生成签名,之后进行sm4加密。收到报文后,先进行sm4解密,解密后将报文进行验签。验证成功之后既结束全部流程。 所以整体上分为两

    2024年02月12日
    浏览(41)
  • sm2签名与sm4加密(三)

    二简单介绍了一下理论,三来简单说下sm2签名的实现, 首先因为openssl太复杂没搞懂,就去看gmssl的代码,gmssl的密钥结构体很简单,长这个样子: 很明显公钥是一个点由xy两个坐标组成,私钥是一个长串。 sm2签名过程可以大体上分成三步,生成公私钥——(交换密钥)——使

    2024年01月18日
    浏览(42)
  • 前端SM4加密解密

    前后端加密一致,如果不一致就是key有问题 调用方法: sm4.js文件

    2024年04月25日
    浏览(58)
  • JAVA -SM4 ECB加密

    前言:根据网络安全法要求,现在对数据存储、口令安全要求越来越严格,对技术人员编码规范要求愈加严苛,推出国密算法等政策要求 sm4-ecm举例说明 第一步引入包提示错误 第二步:pom.xml依赖如下 说明如下: BouncyCastle是一个开源的第三方算法提供商。 BouncyCastle提供了很多

    2024年02月16日
    浏览(32)
  • Java SM4加密解密

    2024年02月11日
    浏览(67)
  • js sm4实现加密解密

    2023.10.25今天我学习了如何使用sm4进行加密解密: 注意:前端和后端的编码必须相同才能使用,不然会出现空字符串的错误。 一、首先安装sm4.js包: package.json中的版本: (安装失败的话可以直接复制下面的版本然后npm install) 二、main.js中全局引入或局部引入: 这个是全局

    2024年01月18日
    浏览(54)
  • 前端使用国密SM4进行加密、解密

    前端/后端使用 国密SM4 进行加密/解密, 【注意】前后端配合加解密时,需要我们 自定义密钥 ,一般由后端提供 下载 sm4util 依赖 sm4util 依赖使用说明 使用 - ECB 模式加解密 后端代码参考:https://blog.csdn.net/qq_48922459/article/details/122130283 这种办法好像只能使用默认密钥 key,不能

    2023年04月23日
    浏览(56)
  • SpringBoot实现国密SM4加密、解密

    SM4.0(原名SMS4.0)是中华人民共和国政府采用的一种分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。 在商用密码体系中,SM4主要用于数据加密,其算法公开,分组长度与密钥长度均为128bit,加密算

    2024年02月07日
    浏览(63)
  • 国密SM4对称加密Java加解密

    提示:国密SM4对称加密Java加解密 国家密码管理局 参考博文 SM4.0(原名SMS4.0)是中华人民共和国政府采用的一种分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。 SM4 代码如下(示例): 在密码学中

    2024年02月11日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包