gs_encrypt

背景信息

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

语法

  1. gs_encrypt [OPTION]... PLAINTEXT

gs_encrypt - 图1 说明:

  • “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。

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

示例

示例1**:**通过输入key和vector明文值来对明文字符串进行加密操作。由于每次加密时使用的IV值是随机生成的,因此使用同样的key和vector以及明文字符串加密后对应的密文串不相同。单次支持加密的明文字符串最大长度为335字节。

  1. gs_encrypt -k password@123 -v 1234567890123456 test_encrypt

命令回显:

  1. G0R7Y2oROfuiEjWtUBx9+eHP3I21A1wMOJ2onVQIiAsxMjM0NTY3ODkwMTIzNDU2

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

  1. 生成cipher和rand文件。

    1. gs_guc generate -S Mppdb@123 -D $GAUSSHOME/bin -o test

    命令回显:

    1. gs_guc encrypt -S ***
  2. 执行加密操作。

    1. gs_encrypt -f test test_encrypt

    命令回显:

    1. tSWpR8aFyF4GHVIVO7QNXhEMNlTcqRMrk172nAf2hLgSQwhcFWyP7X0QVS0SONon

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

  1. 输入base64转码后的key。

    1. python
    2. >>> import base64
    3. >>> print base64.b64encode("XXXXXXXXX");

    命令回显:

    1. R2F1c3NAMTIz
  2. 输入base64转码后vector密文。

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

    命令回显:

    1. MTIzNDU2Nzg5MGFiY2RlZg==
  3. 执行加密操作。

    1. gs_encrypt -B R2F1c3NAMTIz -D MTIzNDU2Nzg5MGFiY2RlZg== test_encrypt

    命令回显:

    1. V7mpnsfIHTjVTYGw1YHI0c6aY0N4J5L7BtU4CqDoeIkxMjM0NTY3ODkwYWJjZGVm