公司最近进行安全问题修改,所以要用国密系列的sm2,sm3,sm4,这些加密都用在登录模块,因此作为菜鸟的我,从网上找了一堆资料,整理修改后形成符合项目的加密,需要的可以自己去查看相关代码和jar包:sm2、sm3、sm4国密js+后台代码国密加密.rar_sm2js解密-Java文档类资源-CSDN下载

具体为:

1.为了保证传输性所以采用sm2加密;ps:sm2 js加密(C1C2C3-0模式),后台sm2解密(C1C2C3-0模式)

2.为了保证完整性所以采用sm3加密;ps: sm3 js加密,后台sm3加密(因为sm3杂凑算法所以不需要解密)

3.为了保证安全性所以采用sm4加密。ps:sm4 加密 CBC模式,解密(CBC模式)

sm2 js加密

sm3 js加密

sm2 后台加密

public class SM2UtilTest {
    
    public static void main(String[] args) {
        //获取公私钥
        SM2KeyPair sm2Keys = SM2Util.getSm2Keys(false);
        System.out.println("公钥 :" + sm2Keys.getPublicKey());
        System.out.println("私钥 :" + sm2Keys.getPrivateKey());
    
        //需要加密的数据
        String data = "5fcd0320ed15fcdf5b08e9c4a9f48a5069f48dcba813eba568327906fd97c8ee";
        //公钥加密,获取密文
        String encrypt = SM2Util.encrypt(sm2Keys.getPublicKey(), data);
        System.out.println("密文 :" + encrypt);
    
        //私钥解密
        String decrypt = SM2Util.decrypt(sm2Keys.getPrivateKey(), encrypt);
        System.out.println("解密数据 : " + decrypt);
    
        System.out.println("明文密文是否相同 :" + data.equals(decrypt));
    }
}

sm3后台

public static void main(String[] args){
        //测试
        String str = "123456";
        String hex = sm3Util.encrypt(str);
        System.out.println(hex);
        
        String str1 = "sdfsd";
        String hex1 = sm3Util.encrypt(str1);
        System.out.println(hex1);
        
        String str2 = "sdfsf...";
        String hex2 = sm3Util.encrypt(str2);
        System.out.println(hex2);
        
        String strpre = "";
        String hexpre = sm3Util.encrypt(strpre);
        System.out.println(hexpre);
        //验证加密后的16进制字符串与加密前的字符串是否相同
        boolean flag = sm3Util.vertify(str, hex);
        System.out.println(flag);
    }

sm4

public static void main(String[] args) throws IOException 
    {
        String plainText = "";
        
        SM4Utils sm4 = new SM4Utils();
        sm4.secretKey = "JeF8U9wHFOMfs2Y8";
        sm4.hexString = false;
        
        System.out.println("ECB模式");
        String cipherText = sm4.encryptData_ECB(plainText);
        System.out.println("密文: " + cipherText);
        System.out.println("");
        
        plainText = sm4.decryptData_ECB(cipherText);
        System.out.println("明文: " + plainText);
        System.out.println("");
        
        System.out.println("CBC模式");
        sm4.iv = "UISwD9fW6cFh9SNS";
        cipherText = sm4.encryptData_CBC(plainText);
        System.out.println("密文: " + cipherText);
        System.out.println("");
        
        plainText = sm4.decryptData_CBC(cipherText);
        System.out.println("明文: " + plainText);
    }

国密sm2 js加密后台解密,sm3 js、后台加密,sm4 后台加密相关推荐

  1. 使用 Python 脚本执行国密 sm2 加解密

    一.场景 工作中的一个场景:Go 需要对信息加解密,但是研究了 GmSSL Go API 文档之后,发现是依赖于 CGO 的,同事配了半天环境没配成功.于是换了一个方法,选择 Go 调 Python ...

  2. 国密SM2,SM3,SM4的前后台(js和java)加解密写法

    目录 SM2加解密 js java SM3加密 js java sm3前后台(js/java)加密不一致原因 SM4加解密 js java 之前做一个项目的时候需要用到国密SM2,SM3,SM4的加解 ...

  3. 国密SM2前端加密,Java后台解密问题

    背景:要实现请求参数加密的功能,使用的是国密SM2算法,前端向后台发送请求获取公钥,将请求加密发送到后台,后台用对应的私钥进行解密 问题:前端进行加密的请求,后台无法进行解析 解决方案:(此处所用的类 ...

  4. 国密SM2算法(JS加密,C#、Java解密)

    常见的渗透测试会将网站登录时密码使用明文传输视为风险.推荐使用国密算法或者RSA算法对密码进行加密传输. RSA加密(JS加密,C#.Java解密)请参考<RSA对称加密(JS加密,C#.Jav ...

  5. Spring Security-用户密码自定义国密SM2加密

    为什么80%的码农都做不了架构师?>>>    由于甲方要求需要把密码的加密方式改为国密SM2的方式,网上看了一些写的代码,结合了一下SpringSecurity用户自定义加密,直接 ...

  6. 国密SM2算法的只求理解不求甚解 (4/5)SM2算法加解密协议

    国密SM2算法的只求理解不求甚解 (1/5)前置数学知识:模运算 国密SM2算法的只求理解不求甚解 (2/5)前置数学知识:平面几何 国密SM2算法的只求理解不求甚解 (3/5)SM2算法数学模型 国 ...

  7. php gmssl,支持国密SM2/SM3/SM4/SM9/ZUC/SSL的密码工具箱GmSSL

    GmSSL概述 GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法.SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码 ...

  8. 国密SM2算法密钥派生函数KDF的实现

    前段时间需要实现国密算法SM2的签名.验签.加密.解密等功能,加解密过程使用到的密钥派生函数(KDF),从网上搜到的代码不符合<GMT 0003.4-2012 SM2椭圆曲线公钥密码算法 > ...

  9. 一文告诉你,国密SM2算法有多优秀

    可能很多人都想不到,密码技术是与核技术.航天技术并列的国家三大安全核心技术之一,在保障信息安全,建设行业网络安全环境,增强我国行业信息系统的"安全可控"能力等方面发挥着至为关键的作 ...

最新文章

  1. STM32使用另外两种方法使LED灯闪烁
  2. 干货丨机器学习新手一定要掌握的10大算法
  3. iOS App与iTunes文件传输的方法和对iOS App文件结构的说明
  4. html固定广告位置,如何将广告始终定位到网页右下角
  5. YOLO系列算法精讲:从yolov1至yolov4的进阶之路
  6. 边缘使用 K8s 门槛太高?OpenYurt 这个功能帮你快速搭建集群!
  7. opengl加载显示3DS模型3DS类型文件
  8. maven 父maven_Maven不会吮吸。 。 。 但是Maven文件会
  9. 微软“作死”Windows
  10. 第三:启发式搜索:A* 算法
  11. 设置模糊阴影_制作带模糊效果的PPT首页
  12. KEmulator eclipse 调试
  13. 斩获双奖 | 悬镜安全亮相IDC 2022 CSO全球网络安全峰会
  14. prlooks插件下载_ae looks插件下载
  15. Isotropix Clarisse iFX Mac(CG渲染软件) v3.6破解版
  16. 期权、期货及其他衍生产品 第一章读书笔记
  17. 8.基本数据类型详细讲解-list/tuple
  18. abortonerror_DCB结构
  19. 理解ASP.NET 5运行时命令:DNVM, DNX, 和DNU
  20. 一次性奖金是否选择并入综合所得测算表

热门文章

  1. 清华姚班陈丹琦等27位华人学者获奖,斯隆奖2022年获奖名单颁布
  2. DTOJ 1486:分数(score)
  3. php 图片压缩旋转,移动端图片上传旋转、压缩问题的解决方案
  4. 怎么实现MindMapper破解版中格式的设置
  5. Oracle EBS GL日记账批“选定以过账”状态数据修复
  6. memcachq队列安装
  7. 一种简单的图形旋转算法
  8. 华硕主板+ubuntu18.04+3090驱动安装踩坑记录
  9. 显卡GTX295到了
  10. vscode代码索引_VS Code:自定义代码片断(Snippets)