10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 41.1 mb
PDF (A4)- 41.2 mb
PDF (RPM)- 39.8 mb
HTML下载(TGZ)- 9.5 mb
HTML下载(Zip)- 9.6 mb
HTML下载(RPM)- 8.1 mb
手册页(TGZ)- 260.5 kb
手册页(Zip)- 371.7 kb
信息(Gzip)- 3.9 mb
信息(邮政编码)- 3.9 mb
本手册节选

MySQL 8.0参考手册/.../ MySQL企业加密用法和示例

6.6.2 MySQL企业加密使用及举例

要在应用程序中使用MySQL企业加密,请调用适合于您希望执行的操作的函数。本节演示如何执行一些有代表性的任务:

使用RSA加密方式创建公私钥对

——加密算法;可以是'DSA'或'DH',而不是SET @算法= 'RSA';——密钥长度(以比特为单位);SET @key_len = 1024;——创建私钥SET @priv = create_asymmetric_priv_key(@算法,@key_len);——从私钥中导出对应的公钥,使用相同的算法SET @pub = create_asymmetric_pub_key(@ algorithm, @priv);

现在您可以使用密钥对加密和解密数据、签名和验证数据,或者生成对称密钥。

使用私钥加密数据,使用公钥解密数据

这要求密钥对的成员必须是RSA密钥。

SET @密文= asymmetric_encrypt(@算法,'我的秘密文本',@priv);SET @明文= asymmetric_decrypt(@算法,@密文,@pub);

相反,您可以使用公钥加密,使用私钥解密。

SET @密文= asymmetric_encrypt(@算法,'我的秘密文本',@pub);SET @明文= asymmetric_decrypt(@算法,@密文,@priv);

在这两种情况下,为加密和解密函数指定的算法必须与用于生成密钥的算法相匹配。

从字符串生成摘要

——摘要型;可以是'SHA256', 'SHA384',或'SHA512',而不是SET @dig_type = 'SHA224';——生成摘要字符串SET @dig = create_digest(@dig_type, 'My text to digest');

使用带有密钥对的摘要

密钥对可用于对数据进行签名,然后验证签名是否与摘要匹配。

——加密算法;可以改为“DSA”;密钥必须—已经使用相同的算法创建SET @算法= 'RSA';——针对摘要SET @sig = asymmetric_sign(@算法,@dig, @priv, @dig_type);——针对摘要SET @verf = asymmetric_verify(@算法,@dig, @sig, @pub, @dig_type);

创建一个对称密钥

这需要DH私钥/公钥作为输入,使用共享对称秘密创建。通过将密钥长度传递给create_dh_parameters (),然后传递秘密作为密钥长度create_asymmetric_priv_key ()

——生成DH共享对称秘密SET @dhp = create_dh_parameters(1024);SET @算法= 'DH';SET @priv1 = create_asymmetric_priv_key(@算法,@dhp);SET @pub1 = create_asymmetric_pub_key(@算法,@priv1);SET @priv2 = create_asymmetric_priv_key(@算法,@dhp);SET @pub2 = create_asymmetric_pub_key(@算法,@priv2);——使用第一方公钥生成对称密钥,——第二方私钥SET @sym1 = asymmetric_派生(@pub1, @priv2);——或者使用第二方公钥,第一方私钥SET @sym2 = asymmetric_派生(@pub2, @priv1);

键字符串值可以在运行时创建,并使用选择,或插入

SET @priv1 = create_asymmetric_priv_key('RSA', 1024);SELECT create_asymmetric_priv_key('RSA', 1024) INTO @priv2;INSERT INTO t (key_col) VALUES(create_asymmetric_priv_key('RSA', 1024));

属性可以读取存储在文件中的键字符串值LOAD_FILE ()函数由具有文件特权。

摘要字符串和签名字符串可以类似地处理。

通过生成密钥操作限制CPU使用

create_asymmetric_priv_key ()而且create_dh_parameters ()加密函数接受一个密钥长度参数,这些函数所需的CPU资源量随着密钥长度的增加而增加。对于某些安装,如果应用程序经常生成过长的键,这可能会导致不可接受的CPU占用。

OpenSSL规定所有密钥的最小密钥长度为1024位。OpenSSL还对DSA和RSA密钥分别规定了最大密钥长度为10,000位和16,384位create_asymmetric_priv_key ()的最大密钥长度为10,000位create_dh_parameters ().如果这些最大值太高,MySQL服务器管理员可以使用三个环境变量来设置更低的密钥生成的最大长度,从而限制CPU使用:

  • MYSQL_OPENSSL_UDF_DSA_BITS_THRESHOLD:最大DSA密钥长度(以比特为单位)create_asymmetric_priv_key ().该变量的最小值和最大值分别为1024和10,000。

  • MYSQL_OPENSSL_UDF_RSA_BITS_THRESHOLD:最大RSA密钥长度(以比特为单位)create_asymmetric_priv_key ().该变量的最小值和最大值分别为1024和16384。

  • MYSQL_OPENSSL_UDF_DH_BITS_THRESHOLD:最大密钥长度(以比特为单位)create_dh_parameters ().该变量的最小值和最大值分别为1024和10,000。

要使用这些环境变量中的任何一个,请将它们设置在启动服务器的进程的环境中。如果设置了,它们的值优先于OpenSSL施加的最大密钥长度。例如,设置DSA和RSA密钥的最大密钥长度为4096位create_asymmetric_priv_key (),设置这些变量:

export MYSQL_OPENSSL_UDF_DSA_BITS_THRESHOLD=4096导出MYSQL_OPENSSL_UDF_RSA_BITS_THRESHOLD=4096

本例使用Bourne shell语法。其他shell的语法可能不同。