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

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

目录

1 国密算法简介

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

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

        下载地址:国密算法SM3的GmSSL代码Android实现Demo


http://www.kler.cn/a/457254.html

相关文章:

  • Vue.js前端框架教程15:Vue父子组件之间的通信ref、emits
  • 【C++】B2083 画矩形
  • Cesium 实战 27 - 三维视频融合(视频投影)
  • 【加密算法简介】
  • 如何利用云计算进行灾难恢复?
  • 斗鱼Android面试题及参考答案
  • 【Leecode】Leecode刷题之路第93天之复原IP地址
  • 使用Python实现智能交通信号控制系统
  • 深度学习笔记(12)——深度学习概论
  • CDN如何抵御DDoS攻击
  • 如何在 Ubuntu 22.04 上使用 systemctl 管理 systemd 服务教程
  • Pytorch | 利用MIG针对CIFAR10上的ResNet分类器进行对抗攻击
  • python lambda函数用法
  • Android `android.graphics.drawable` 包深度解析:架构与设计模式
  • zentao ubuntu上安装
  • EMNLP'24 最佳论文解读 | 大语言模型的预训练数据检测:基于散度的校准方法
  • 探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
  • 从零开始采用命令行创建uniapp vue3 ts springboot项目
  • 《PHP Switch》
  • DeepSeek-VL2部署指南
  • Linux总结之CentOS Stream 9安装mysql8.0实操安装成功记录
  • Qt For Android之环境搭建(Qt 5.12.11 Qt下载SDK的处理方案)
  • 药片缺陷检测数据集,8625张图片,使用YOLO,PASICAL VOC XML,COCO JSON格式标注,可识别药品是否有缺陷,是否完整
  • USB免驱全协议IC卡读写器 QT程序开发
  • 【服务器主板】定制化:基于Intel至强平台的全新解决方案
  • 手机h5加桌面图标