当前位置: 首页 > news >正文

郑州网站开发培训班上传的网站打不开 index.asp

郑州网站开发培训班,上传的网站打不开 index.asp,新媒体h5是什么,做婚恋网站多少钱Spring 集成 SM4(国密对称加密)算法 主要用于保护敏感数据,如身份证、手机号、密码等。 下面是完整集成步骤(含工具类 使用示例),采用 Java 实现(可用于 Spring Boot)。 一、依赖引…

Spring 集成 SM4(国密对称加密)算法 主要用于保护敏感数据,如身份证、手机号、密码等。

下面是完整集成步骤(含工具类 + 使用示例),采用 Java 实现(可用于 Spring Boot)。


一、依赖引入

推荐使用 BouncyCastle 国密库支持 SM4:

<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15to18</artifactId><version>1.70</version>
</dependency>

二、SM4 工具类(ECB 模式)

import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.Security;
import java.util.Base64;public class SM4Util {static {// 注册 BouncyCastle 提供者Security.addProvider(new BouncyCastleProvider());}private static final String ALGORITHM_NAME = "SM4";private static final String TRANSFORMATION = "SM4/ECB/PKCS5Padding";private static final String ENCODING = "UTF-8";/*** 加密*/public static String encrypt(String plainText, String key) throws Exception {Cipher cipher = Cipher.getInstance(TRANSFORMATION, "BC");SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(ENCODING), ALGORITHM_NAME);cipher.init(Cipher.ENCRYPT_MODE, secretKey);byte[] cipherText = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));return Base64.getEncoder().encodeToString(cipherText);}/*** 解密*/public static String decrypt(String cipherTextBase64, String key) throws Exception {Cipher cipher = Cipher.getInstance(TRANSFORMATION, "BC");SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(ENCODING), ALGORITHM_NAME);cipher.init(Cipher.DECRYPT_MODE, secretKey);byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(cipherTextBase64));return new String(decrypted, StandardCharsets.UTF_8);}
}

三、密钥要求

  • SM4 密钥必须是 16 字节(128 位)
  • 不能随意长度,例如:
String key = "1234567890abcdef"; // 刚好16个字符

四、使用示例

public class TestSm4 {public static void main(String[] args) throws Exception {String key = "1234567890abcdef";String content = "国密测试数据";String encrypted = SM4Util.encrypt(content, key);System.out.println("加密后: " + encrypted);String decrypted = SM4Util.decrypt(encrypted, key);System.out.println("解密后: " + decrypted);}
}

五、Spring Boot 项目集成建议

  1. 封装成 SM4Service

    @Service
    public class SM4Service {private final String key = "your-16-byte-key";public String encrypt(String data) {try {return SM4Util.encrypt(data, key);} catch (Exception e) {throw new RuntimeException("SM4 加密失败", e);}}public String decrypt(String data) {try {return SM4Util.decrypt(data, key);} catch (Exception e) {throw new RuntimeException("SM4 解密失败", e);}}
    }
    
  2. 加密敏感字段(如手机号)存数据库

  3. 接口入参加密 + 出参解密(前后端配合)

  4. 支持注解方式自动加解密(可选扩展)


可选增强

  • 支持 SM4 CBC 模式(需要 IV 向量)
  • 密钥统一管理(建议结合加密配置中心)
  • 加密数据进行 Base64 编码(便于传输)
  • 使用 Sa-Token + SM4 实现 Token 加密

http://www.dtcms.com/a/454855.html

相关文章:

  • c 网站开发 vs2012常州品牌网站建设
  • 南沙建设局网站网站后台安全密码
  • 勒流有做网站的吗东莞企业网站排名优化
  • 电子商务网站建设实验心得广告投放基础知识
  • 网站移动窗口代码腾讯云wed服务器做网站
  • 网站建设经费计划内容传奇手游新开服网站
  • 自注意力机制(Self-Attention)的深度解析:从原理到应用
  • 020网站设计网站做弹窗广告吗
  • 上海网站建设有限公司邯郸市做网站建设
  • 院系网站建设具体要求网站建设管理工作自查报告
  • 康定网站建设小学网站建设工作小组
  • 晋江模板建站江门网站设计
  • 第十三篇:移动语义与右值引用:彻底理解std::move和std::forward
  • 电子商务网站开发的基本原则棋牌网站开发需要多少钱
  • 东营网站建设入门做百度推广送网站
  • 辛集手机网站建设阿里巴巴国际站怎么做网站模版
  • wordpress站群 会员国外做电商平台的网站有什么
  • 北京 网站建设大全凡客诚品倒闭了吗
  • 开源项目学习(7) ---- Google Gtest
  • 《投资-83》价值投资者的认知升级与交易规则重构 - 第二层:财务质量评估、财务指标(当下是否赚钱)详解
  • 微信、网站提成方案点做搜索推广账户优化
  • 公司内部网站的作用网站服务器重启
  • 站长百度互动平台网站建设
  • 常州公司网站建设多少钱中英文网站建设
  • 河南做网站联系电话wordpress安装语言设置
  • MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
  • 同安网站建设网站开发用了哪些知识要点
  • 京东商品详情API深度技术解析与应用全景图
  • 【数值分析】09-非线性方程的求根方法-简单迭代法求根(2)
  • 彩票网站开发制作模版企业建设营销型网站步骤