VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

gs_encrypt

功能描述

Vastbase提供了gs_encrypt工具为输入的明文字符串进行加密操作。

注意事项

出于安全考虑,建议用户在使用gs_encrypt工具前设置HISTCONTROL=ignorespace,强制不记录敏感历史命令,然后在执行gs_encrypt命令行前面加空格。

  • HISTCONTROL变量是用冒号分隔的值列表,可以控制操作系统如何去存储bash历史记录,它可用于忽略重复的命令或带前导空格的命令, 或两者都忽略。当我们不希望某些命令出现在”历史记录”中时, 可以使用HISTCONTROL变量来完成。
  • HISTCONTROL变量的取值范围:
    • ignoredups:忽略与最近使用的命令相同的命令。
    • ignorespace:忽略前面带有空格的命令。
    • ignoreboth:同时使用ignorespace和ignoreups。
  • 在操作系统中执行如下命令,设置以空格字符开头的行不包含在历史记录列表中。

    HISTCONTROL=ignorespace
    

语法格式

gs_encrypt [OPTION]... PLAINTEXT
  • PLAINTEXT前不需要加短选项或长选项。

  • PLAINTEXT是需要加密的明文字符串。

参数说明

  • -?, --help

    显示帮助信息。

  • -V, --version

    显示版本号信息。

  • -k PASSWORD, --key=PASSWORD

    用户输入的口令,用于派生出加密操作时使用的密钥。口令长度有效范围为大于等于8个字符,小于等于16个字符,并且至少包含大写字母、小写字母、数字和特殊字符中的三种字符。

  • -v VectorValue,--vector=VectorValue

    加密操作时使用的随机数,字符串长度必须等于16。

  • -f FilePrefix, --file-prefix=FilePrefix

    加密操作时使用的cipher和rand文件前缀字符串。

    cipher和rand文件必须存放在$GAUSSHOME/bin目录下。

  • -B Value, --key-base64=Value

    加密时使用的明文密钥,以base64编码。

  • -D Value,--vector-base64=Value

    加密时使用的随机数,以base64编码。base64编码前的字符串长度必须为16。

  • -u, --kms-userpin=Value

    该参数用于指定连接三未信安KMS的用户名和密码。

    • 该参数只有在使用三未信安加密时才会用到。

    • 仅Vastbase G100 V2.2 Build 10及以上版本支持该选项。

  • -t, --kms-type=Value

    使用KMS加密保护数据安全,KMS模式支持SWS-KMS-SM4(三未信安)算法和TAS-KMS-SM4(江南天安)算法。

    仅在Vastbase G100 V2.2 Build 10到Build 12版本支持该选项。

使用示例

示例1: 通过输入key和vector明文值来对明文字符串进行加密操作。

gs_encrypt -k password@123 -v 1234567890123456 test_encrypt

返回结果为:

3unfiNsDECKE6FgZf9dnIx0Cc0Z8QSYVD+/UMQggJkIxMjM0NTY3ODkwMTIzNDU2

由于每次加密时使用的IV值(初始化向量)是随机生成的,因此使用同样的key和vector以及明文字符串加密后对应的密文串不相同。单次支持加密的明文字符串最大长度为335字节。

示例2: 已经存在cipher和rand文件,通过文件前缀来对明文字符串进行加密操作。

1、生成cipher和rand文件。

vb_guc generate -S Mppdb@123 -D $GAUSSHOME/bin -o test

返回结果为:

vb_guc encrypt -S ***

2、执行加密操作。

gs_encrypt -f test test_encrypt

返回结果为:

k44hNNFlzSTCyQ/GQAZBCwG7OzgyeVxrZUr58G2q0OkrbqVUfMHU2w0Llv43U1e5

示例3: 通过输入base64加密后的key和vector密文来对明文字符串进行加密操作。

1、输入base64加密后的key。

python
>>> import base64
>>> print base64.b64encode("Vastbase@123");

返回结果为:

VmFzdGJhc2VAMTIz

2、输入base64加密后vector密文。

>>> print base64.b64encode("1234567890abcdef");

返回结果为:

MTIzNDU2Nzg5MGFiY2RIlzg==

3、执行加密操作。

gs_encrypt -B VmFzdGJhc2VAMTIz -D MTIzNDU2Nzg5MGFiY2RIlzg==  test_encrypt

返回结果为:

B7fLbJRTNwCDNOp273lvm/aaZmcDweWMEXBWfjELMOgxMjMONTY30DkwYWJjZGVm