Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

stdx.crypto.keys

功能介绍

keys 包提供非对称加密和签名算法,包括 RSA 和 SM2 非对称加密算法以及 ECDSA 签名算法。

使用本包需要外部依赖 OpenSSL 3 的 crypto 动态库文件,故使用前需安装相关工具。

  • 对于 Linux 操作系统,可参考以下方式:

    • 如果系统的包管理工具支持安装 OpenSSL 3 开发工具包,可通过这个方式安装,并确保系统安装目录下含有 libcrypto.so 和 libcrypto.so.3 这两个动态库文件,例如 Ubuntu 22.04 系统上可使用 sudo apt install libssl-dev 命令安装 libssl-dev 工具包;
    • 如果无法通过上面的方式安装,可自行下载 OpenSSL 3.x.x 源码编译安装软件包,并确保安装目录下含有 libcrypto.so 和 libcrypto.so.3 这两个动态库文件,然后可选择下面任意一种方式来保证系统链接器可以找到这些文件:
      • 在系统未安装 OpenSSL 的场景,安装时选择直接安装到系统路径下;
      • 安装在自定义目录的场景,将这些文件所在目录设置到环境变量 LD_LIBRARY_PATH 以及 LIBRARY_PATH 中。
  • 对于 Windows 操作系统,可按照以下步骤:

    • 自行下载 OpenSSL 3.x.x 源码编译安装 x64 架构软件包或者自行下载安装第三方预编译的供开发人员使用的 OpenSSL 3.x.x 软件包;
    • 确保安装目录下含有 libcrypto.dll.a(或 libcrypto.lib)、libcrypto-3-x64.dll 这两个库文件;
    • 将 libcrypto.dll.a(或 libcrypto.lib)所在的目录路径设置到环境变量 LIBRARY_PATH 中,将 libcrypto-3-x64.dll 所在的目录路径设置到环境变量 PATH 中。
  • 对于 macOS 操作系统,可参考以下方式:

    • 使用 brew install openssl@3 安装,并确保系统安装目录下含有 libcrypto.dylib 和 libcrypto.3.dylib 这两个动态库文件;
    • 如果无法通过上面的方式安装,可自行下载 OpenSSL 3.x.x 源码编译安装软件包,并确保安装目录下含有 libcrypto.dylib 和 libcrypto.3.dylib 这两个动态库文件,然后可选择下面任意一种方式来保证系统链接器可以找到这些文件:
      • 在系统未安装 OpenSSL 的场景,安装时选择直接安装到系统路径下;
      • 安装在自定义目录的场景,将这些文件所在目录设置到环境变量 DYLD_LIBRARY_PATH 以及 LIBRARY_PATH 中。
  • 对于 Android 操作系统,可参考以下方式:

    • 由于 Android 系统默认自带的 OpenSSL 是裁剪版本,部分接口可能找不到符号而抛出异常,因此需要用户自行编译安装完整的 OpenSSL 3.x.x 版本;
    • 可自行下载 OpenSSL 3.x.x 源码,使用 Android NDK 交叉编译生成对应架构(当前只支持 arm64-v8a)的动态库文件,确保编译产物中含有 libcrypto.so 和 libcrypto.so.3 这些动态库文件;
    • 将这些文件所在目录设置到环境变量 LD_LIBRARY_PATH 中。

说明:

如果未安装 OpenSSL 3 软件包或者安装低版本的软件包,程序可能无法使用并抛出相关异常 CryptoException:Can not load openssl library or function xxx。

API 列表

类名功能
ECDSAPrivateKeyECDSA 私钥类。
ECDSAPublicKeyECDSA 公钥类。
GeneralPrivateKey通用的私钥参数加解密功能实现。
GeneralPublicKey通用的公钥参数加解密功能实现。
RSAPrivateKeyRSA 私钥类。
RSAPublicKeyRSA 公钥类。
SM2PrivateKeySM2 私钥类。
SM2PublicKeySM2 公钥类。

枚举

枚举名功能
Curve枚举类型 Curve 用于选择生成 ECDSA 密钥时使用的椭圆曲线类型。
PadOption用于设置 RSA 的填充模式。

结构体

结构体名功能
OAEPOption最优非对称加密填充。
PSSOption概率签名方案。