gs_encrypt
背景信息
openGauss提供了gs_encrypt工具为输入的明文字符串进行加密操作。
工具运行产生的日志位于$GAUSSLOG/bin/gs_encrypt目录下,每个日志最大16MB,最多保留50个。如果环境变量GAUSSLOG没有配置,则不会产生日志文件。
语法
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。
说明: 出于安全考虑,建议用户在使用gs_encrypt工具前设置HISTCONTROL=ignorespace,强制不记录敏感历史命令,然后在执行gs_encrypt命令行前面加空格。
示例
示例1:通过输入key和vector明文值来对明文字符串进行加密操作。由于每次加密时使用的IV值是随机生成的,因此使用同样的key和vector以及明文字符串加密后对应的密文串不相同。单次支持加密的明文字符串最大长度为335字节。
gs_encrypt -k password@123 -v 1234567890123456 test_encrypt
命令回显:
G0R7Y2oROfuiEjWtUBx9+eHP3I21A1wMOJ2onVQIiAsxMjM0NTY3ODkwMTIzNDU2
示例2:已经存在cipher和rand文件,通过文件前缀来对明文字符串进行加密操作。
生成cipher和rand文件。
gs_guc generate -S Mppdb@123 -D $GAUSSHOME/bin -o test
命令回显:
gs_guc encrypt -S ***
执行加密操作。
gs_encrypt -f test test_encrypt
命令回显:
tSWpR8aFyF4GHVIVO7QNXhEMNlTcqRMrk172nAf2hLgSQwhcFWyP7X0QVS0SONon
示例3:通过输入base64转码后的key和vector密文来对明文字符串进行加密操作。
输入base64转码后的key。
python >>> import base64 >>> print base64.b64encode("XXXXXXXXX");
命令回显:
R2F1c3NAMTIz
输入base64转码后vector密文。
>>> print base64.b64encode("1234567890abcdef");
命令回显:
MTIzNDU2Nzg5MGFiY2RlZg==
执行加密操作。
gs_encrypt -B R2F1c3NAMTIz -D MTIzNDU2Nzg5MGFiY2RlZg== test_encrypt
命令回显:
V7mpnsfIHTjVTYGw1YHI0c6aY0N4J5L7BtU4CqDoeIkxMjM0NTY3ODkwYWJjZGVm