国密算法SM3的GmSSL代码Android实现Demo

server/2024/12/28 13:19:26/

目录

1 国密算法简介

SM3%E7%9A%84Android%20JNI%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0-toc" style="margin-left:0px;">2 SM3的Android JNI代码实现

3 演示Demo

3.1 开发环境

3.2 功能介绍

3.3 下载地址


1 国密算法简介

        国密算法是国家商用密码算法的简称。自2012年以来,国家密码管理局以《中华人民共和国密码行业标准》的方式,陆续公布了SM2/SM3/SM4等密码算法标准及其应用规范。其中“SM”代表“商密”,即用于商用的、不涉及国家秘密的密码技术。其中SM2为基于椭圆曲线密码的公钥密码算法标准,包含数字签名、密钥交换和公钥加密,用于替换RSA/Diffie-Hellman/ECDSA/ECDH等国际算法;SM3为密码哈希算法,用于替代MD5/SHA-1/SHA-256等国际算法;SM4为分组密码,用于替代DES/AES等国际算法;SM9为基于身份的密码算法,可以替代基于数字证书的PKI/CA体系。通过部署国密算法,可以降低由弱密码和错误实现带来的安全风险和部署PKI/CA带来的开销。

序号

算法类型

国密算法

应用范围及描述

对应的国际算法

补充

1

非对称加密

SM2

身份认证,数据签名,密码交换,256位椭圆曲线

RSA、RSA4096

2

对称加密

SM1

128位数据加密,算法不公开,仅以IP核的形式存在于芯片中。智能IC卡、智能密码钥匙、加密卡、加密机。

DES、3DES、AES(128)、AES192、AES256

AES是取代DES的算法

SM4

128位数据加密,相当于AES(128)

3

完整性运算

SM3

256位数据摘要计算,相当于SHA256

SHA1、SHA-256、SHA-384、SHA-512

SM3%E7%9A%84Android%20JNI%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0">2 SM3的Android JNI代码实现

        SM3是中华人民共和国政府采用的一种密码散列函数标准,由国家密码管理局于2010年12月17日发布。相关标准为“GM/T 0004-2012 《SM3密码杂凑算法》”。 在商用密码体系中,SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其算法公开。据国家密码管理局表示,其安全性及效率与SHA-256相当。

package crypt.jni;public class GmsslLib {//加载动态库static {System.loadLibrary("gmssllib");}/*** @category 获取算法版本* @param* @return   算法版本* */public native String getVersion();/*** @category sm3摘要* @param    msg    - [in] 待摘要的数据数组*           msglen - [in] 待摘要的数据指针*           dgst   - [out] 摘要值,32字节* @return   0-成功,其他-失败* */public native int sm3Digest(byte[] msg, int msglen, byte[] dgst);/*** @category SM3-hmnac* @param    key     - [in] 秘钥*           keylen  - [in] 秘钥长度*           data    - [in] 输入数据*           datalen - [in] 输入数据长度*           mac     - [out] 输出HMAC值,32字节* @return   0-成功,其他-失败* */public native int sm3Hmac(byte[] key, int keylen,byte[] data, int datalen,byte[] mac);
}

3 演示Demo

3.1 开发环境

  • Windows 10 pro x64

  • GmSSL-3.1.1

  • Android Studio Flamingo | 2022.2.1 Patch 1

3.2 功能介绍

        演示程序主界面如下图所示,包括SM3-HASH和SM3-HMAC等功能。

        支持String(文本)、Hex(十六进制)、Base64等多种数据格式。

3.3 下载地址

        开发环境:

  • Windows 10 pro x64

  • GmSSL-3.1.1

  • Android Studio Flamingo | 2022.2.1 Patch 1

        下载地址:国密算法SM3GmSSL代码Android实现Demo


http://www.ppmy.cn/server/153923.html

相关文章

Dataset Distillation with Attention Labels for Fine-tuning BERT

文章使用了DD更新的方式,就是先使用蒸馏数据集训练一个模型,然后计算真实数据在这个模型上的损失,更新蒸馏数据集。 文章的做法是:在训练蒸馏数据集网络时,加入了attention损失 这时候生成数据集不仅仅包含原始数据x和…

使用RKNN进行YOLOv8人体姿态估计的实战教程:yolov8-pose.onnx转yolov8-pose.rknn+推理全流程

之前文章有提到“YOLOv8的原生模型包含了后处理步骤,其中一些形状超出了RK3588的矩阵计算限制,因此需要对输出层进行一些裁剪”,通过裁剪后得到的onnx能够顺利的进行rknn转换,本文将对转rnkk过程,以及相应的后处理进行阐述。并在文末附上全部源码、数据、模型的百度云盘链…

Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】

JAVA最新版JDK 23 安装教程详解 Java Development Kit (JDK) 23 是Oracle发布的最新长期支持版本 (LTS) 之一,它带来了许多新特性和改进。 本教程将详细介绍如何在Windows、macOS和Linux系统上安装JDK 23,并涵盖一些常见问题和解决方法。 一、 准备工作…

Elasticsearch-索引的批量操作

索引的批量操作 批量查询和批量增删改 批量查询 #批量查询 GET product/_search GET /_mget {"docs": [{"_index": "product","_id": 2},{"_index": "product","_id": 3}] }GET product/_mget {"…

RestTemplate关于https的使用详解

RestTemplate关于https的使用详解 一、restTemplate注入到bean里面。 Configuration public class RestTempleConfig {BeanPrimarypublic RestTemplate restTemplate() {return new RestTemplate();}/*** https 请求的 restTemplate* return* throws Exception*/Beanpublic R…

探索Flink动态CEP:杭州银行的实战案例

摘要:本文撰写自杭州银行大数据工程师唐占峰、欧阳武林老师。将介绍 Flink 动态 CEP的定义与核心概念、应用场景、并深入探讨其技术实现并介绍使用方式。主要分为以下几个内容: Flink动态CEP简介 Flink动态CEP的应用场景 Flink动态CEP的技术实现 Flin…

单词接龙,

单词接龙是一个与我们经常玩的成语接龙相类似的游戏。 现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”,每个单词最多被使用两次。 在两个单词相连时,其重合部分合为一部分,例如 bea…

SQL Server 新建 用户 登录失败。 (Microsoft SQL Server,错误: 18456)

新建用户后用SQLserver shen身份验证一直提示用户登录用户 登录失败。 (Microsoft SQL Server,错误: 18456)。 问题: 新建标题: 连接到服务器 无法连接到 DESKTOP-GKBXLEE。 其他信息: 用户 ‘’ 登录失败。 (Microsoft SQL Server,错误: 18456) 解…