Coder Social home page Coder Social logo

zhangyantao / opensm Goto Github PK

View Code? Open in Web Editor NEW

This project forked from guanzhi/gmssl

10.0 2.0 4.0 28.56 MB

开源国密SM2/SM3/SM4算法,基于GmSSL,基于OpenSSL1.1.0

Home Page: http://gmssl.org

License: Other

Perl 25.20% DIGITAL Command Language 0.02% C 69.00% C++ 2.19% Shell 0.36% Assembly 1.08% M4 0.24% eC 0.03% Objective-C 1.82% Python 0.01% Java 0.05%

opensm's Introduction

关于GmSSL

GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用。GmSSL项目是OpenSSL项目的分支,并与OpenSSL保持接口兼容。因此GmSSL可以替代应用中的OpenSSL组件,并使应用自动具备基于国密的安全能力。GmSSL项目采用对商业应用友好的类BSD开源许可证,开源且可以用于闭源的商业应用。GmSSL项目由北京大学关志副研究员的密码学研究组开发维护,项目源码托管于GitHub。自2014年发布以来,GmSSL已经在多个项目和产品中获得部署与应用,并获得2015年度“一铭杯”**Linux软件大赛二等奖(年度最高奖项)与开源**密码类推荐项目。GmSSL项目的核心目标是通过开源的密码技术推动国内网络空间安全建设。

最新动态

  • 2017年2月15日 原master分支更名为gmssl-v1,当前master支代码开始迁移至OpenSSL-1.1.0。
  • 2017年2月12日 支持完整的密码库Java语言封装GmSSL-Java-Wrapper
  • 2017年1月18日 更新了项目主页
  • 更多 ...

国密算法

国密算法是国家商用密码算法的简称。自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带来的开销。

快速上手

快速上手指南介绍GmSSL的编译、安装和gmssl命令行工具的基本指令。

  1. 下载源代码,解压缩至当前工作目录

    $ tar xzvf gmssl-<version>.tar.gz
  2. 编译与安装

  Windwos平台

  1. 安装ActivePerl
  2. 安装dmake 
ppm install dmake
  3. 配置编译
perl configure VC-WIN32
  4. 编译
nmake

Linux平台(其他平台的安装过程见编译与安装

$ ./config
$ make
$ sudo make install

安装之后可以执行gmssl命令行工具检查是否成功

$ gmssl version
GmSSL 1.3.0 - OpenSSL 1.0.2d
  1. SM4加密文件

    $ gmssl sms4 -e -in <yourfile> -out <yourfile>.sms4
    enter sms4-cbc encryption password: <your-password>
    Verifying - enter sms4-cbc encryption password: <your-password>

    解密

    $ gmssl sms4 -d -in <yourfile>.sms4
    enter sms4-cbc decryption password: <your-password>
  2. 生成SM3摘要

    $ gmssl sm3 <yourfile>
    SM3(yourfile)= 66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0
    
  3. 生成SM2密钥并签名

    $ gmssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:sm2p256v1 \
                    -pkeyopt ec_param_enc:named_curve  -out signkey.pem
    $ gmssl pkeyutl -sign -pkeyopt ec_sign_algor:sm2 -inkey signkey.pem \
                    -in <yourfile> -out <yourfile>.sig

    可以将公钥从signkey.pem中导出并发发布给验证签名的一方

    $ gmssl pkey -pubout -in signkey.pem -out vrfykey.pem
    $ gmssl pkeyutl -verify -pkeyopt ec_sign_algor:sm2 -pubin -inkey vrfykey.pem \
                    -in <yourfile> -sigfile <yourfile>.sig

项目文档

opensm's People

Contributors

guanzhi avatar ggsuchao avatar zxm256 avatar b1gcat avatar laiwei360735 avatar litianjue avatar lanyaaki avatar huangxinv587 avatar

Stargazers

 avatar  avatar  avatar ZeroOne avatar  avatar  avatar  avatar Pan Lanlan avatar victor_chenpan avatar  avatar

Watchers

 avatar bboyopen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.