10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 36.3 mb
PDF (A4)- 36.4 mb
PDF (RPM)- 35.5 mb
HTML下载(TGZ)- 9.3 mb
HTML下载(Zip)- 9.4 mb
HTML下载(RPM)- 8.1 mb
手册页(TGZ)- 235.5 kb
手册页(Zip)- 347.0 kb
信息(Gzip)- 3.3 mb
信息(邮政编码)- 3.3 mb
本手册节选

MySQL 5.7参考手册/.../ MySQL企业加密功能描述

6.6.4 MySQL企业加密功能介绍

MySQL企业加密函数有这些一般特征:

  • 对于错误类型的参数或不正确数量的参数,每个函数都会返回一个错误。

  • 如果参数不适合允许函数执行所请求的操作,则返回或者0。例如,如果函数不支持指定的算法,密钥长度过短或过长,或PEM格式的密钥字符串不是有效的密钥,就会发生这种情况。(OpenSSL强加了自己的密钥长度限制,服务器管理员可以通过设置环境变量对最大密钥长度施加额外限制。看到第6.6.2节,“MySQL企业加密使用和示例”.)

  • 底层SSL库负责随机初始化。

有几个函数接受加密算法参数。下表按功能总结了支持的算法。


请注意

虽然您可以使用任何RSA、DSA或DH加密算法创建密钥,但其他接受密钥参数的函数可能只接受某些类型的密钥。例如,asymmetric_encrypt ()而且asymmetric_decrypt ()只接受RSA密钥。

下面描述了MySQL企业加密函数的调用序列。有关其他示例和讨论,请参见第6.6.2节,“MySQL企业加密使用和示例”

  • asymmetric_decrypt (算法crypt_strkey_str

    使用给定的算法和密钥字符串解密加密字符串,并将结果明文作为二进制字符串返回。如果解密失败,结果是

    key_str必须是PEM格式的有效密钥字符串。为了成功解密,它必须是与所使用的私钥或公钥字符串相对应的公钥或私钥字符串asymmetric_encrypt ()生成加密的字符串。算法创建密钥时使用的加密算法。

    支持算法价值观:RSA的

    使用示例请参见asymmetric_encrypt ()

  • asymmetric_derive (pub_key_strpriv_key_str

    使用一方的私钥和另一方的公钥派生对称密钥,并将结果密钥作为二进制字符串返回。如果密钥推导失败,则结果为

    pub_key_str而且priv_key_str必须是PEM格式的有效密钥字符串。必须使用DH算法创建。

    假设你有两对公钥和私钥:

    SET @dhp = create_dh_parameters(1024);SET @priv1 = create_asymmetric_priv_key('DH', @dhp);SET @pub1 = create_asymmetric_pub_key('DH', @priv1);SET @priv2 = create_asymmetric_priv_key('DH', @dhp);SET @pub2 = create_asymmetric_pub_key('DH', @priv2);

    进一步假设您使用来自一对的私钥和来自另一对的公钥来创建一个对称密钥字符串。那么这个对称键标识关系成立:

    asymmetric_derived (@pub1, @priv2) = asymmetric_derived (@pub2, @priv1)
  • asymmetric_encrypt (算法strkey_str

    使用给定的算法和密钥字符串加密字符串,并以二进制字符串的形式返回结果密文。如果加密失败,结果是

    str长度不能大于key_str长度−11,单位为字节

    key_str必须是PEM格式的有效密钥字符串。算法创建密钥时使用的加密算法。

    支持算法价值观:RSA的

    若要加密字符串,请将私钥或公钥字符串传递给asymmetric_encrypt ().若要恢复原始的未加密字符串,请将加密字符串传递给asymmetric_decrypt (),以及与用于加密的私钥或公钥字符串对应的公钥或私钥字符串。

    ——生成私钥/公钥对SET @priv = create_asymmetric_priv_key('RSA', 1024);SET @pub = create_asymmetric_pub_key('RSA', @priv);——用私钥加密,用公钥解密SET @ciphertext = asymmetric_encrypt('RSA', 'The quick brown fox', @priv);SET @明文=不对称解密('RSA', @密文,@pub);——使用公钥加密,使用私钥解密SET @密文= asymmetric_encrypt('RSA', 'The quick brown fox', @pub);SET @明文=不对称解密('RSA', @密文,@priv);

    假设:

    SET @priv =有效的PEM格式的RSA私钥字符串。SET @pub =对应的PEM格式的RSA公钥字符串

    那么这些身份关系就成立了:

    asymmetric_decrypt('RSA', asymmetric_encrypt('RSA', @s, @priv), @pub) = @s
  • asymmetric_sign (算法digest_strpriv_key_strdigest_type

    使用私钥字符串签署摘要字符串,并以二进制字符串的形式返回签名。如果签名失败,结果为

    digest_str摘要字符串。它可以通过调用来生成create_digest ()digest_type指示用于生成摘要字符串的摘要算法。

    priv_key_str用于对摘要字符串签名的私钥字符串。必须是PEM格式的有效密钥字符串。算法创建密钥时使用的加密算法。

    支持算法价值观:RSA的DSA的

    支持digest_type价值观:“SHA224”“SHA256”“SHA384”“SHA512”

    使用示例请参见asymmetric_verify ()

  • asymmetric_verify (算法digest_strsig_strpub_key_strdigest_type

    验证签名字符串是否与摘要字符串匹配,并返回1或0表示验证成功或失败。

    digest_str摘要字符串。它可以通过调用来生成create_digest ()digest_type指示用于生成摘要字符串的摘要算法。

    sig_str签名字符串。它可以通过调用来生成asymmetric_sign ()

    pub_key_str签名者的公钥字符串。它对应于传递给的私钥asymmetric_sign ()生成签名字符串,且必须是PEM格式的有效密钥字符串。算法创建密钥时使用的加密算法。

    支持算法价值观:RSA的DSA的

    支持digest_type价值观:“SHA224”“SHA256”“SHA384”“SHA512”

    ——设置加密算法和摘要类型Set @算法= 'RSA';SET @dig_type = 'SHA224';——创建私钥/公钥对SET @priv = create_asymmetric_priv_key(@算法,1024);SET @pub = create_asymmetric_pub_key(@算法,@priv);——从字符串SET @dig = create_digest(@dig_type, 'The quick brown fox');——针对摘要SET @sig = asymmetric_sign(@算法,@dig, @priv, @dig_type);SET @verf = asymmetric_verify(@算法,@dig, @sig, @pub, @dig_type);
  • create_asymmetric_priv_key (算法,{key_len|dh_secret})

    使用给定的算法和密钥长度或DH秘密创建一个私钥,并以PEM格式的二进制字符串返回密钥。如果密钥生成失败,则结果为

    支持算法价值观:RSA的DSA的“DH”

    支持key_lenvalues:最小密钥长度(以比特为单位)为1024。最大密钥长度取决于算法:RSA为16,384,DSA为10,000。这些键长度限制是由OpenSSL施加的约束。服务器管理员可以通过设置环境变量对最大密钥长度施加额外限制。看到第6.6.2节,“MySQL企业加密使用和示例”

    对于DH密钥,传递一个共享的DH密钥,而不是密钥长度。要创建密钥,请将密钥长度传递给create_dh_parameters ()

    这个例子创建了一个2048位的DSA私钥,然后从私钥派生出一个公钥:

    SET @priv = create_asymmetric_priv_key('DSA', 2048);SET @pub = create_asymmetric_pub_key('DSA', @priv);

    生成DH密钥举例请参见章节的描述asymmetric_derive ()

    选择密钥长度和加密算法时的一些一般考虑因素:

    • 私钥和公钥的加密强度随着密钥大小的增加而增加,但生成密钥的时间也会增加。

    • 生成DH密钥的时间比生成RSA或RSA密钥的时间长。

    • 非对称加密函数比对称加密函数速度慢。如果性能是一个重要因素,并且函数要经常使用,那么最好使用对称加密。例如,考虑使用AES_ENCRYPT ()而且AES_DECRYPT ()

  • create_asymmetric_pub_key (算法priv_key_str

    使用给定的算法从给定的私钥派生一个公钥,并以PEM格式的二进制字符串返回该密钥。如果密钥推导失败,则结果为

    priv_key_str必须是PEM格式的有效密钥字符串。算法创建密钥时使用的加密算法。

    支持算法价值观:RSA的DSA的“DH”

    使用示例请参见create_asymmetric_priv_key ()

  • create_dh_parameters (key_len

    创建用于生成DH私钥/公钥对的共享密钥,并返回可传递给的二进制字符串create_asymmetric_priv_key ().如果秘密生成失败,结果为null。

    支持key_lenvalues:最小键长1024位,最大键长10000位。这些键长度限制是由OpenSSL施加的约束。服务器管理员可以通过设置环境变量对最大密钥长度施加额外限制。看到第6.6.2节,“MySQL企业加密使用和示例”

    有关如何使用返回值生成对称键的示例,请参见asymmetric_derive ()

    SET @dhp = create_dh_parameters(1024);
  • create_digest (digest_typestr

    使用给定摘要类型从给定字符串创建摘要,并以二进制字符串的形式返回摘要。如果摘要生成失败,则结果为

    支持digest_type价值观:“SHA224”“SHA256”“SHA384”“SHA512”

    SET @dig = create_digest('SHA512', The quick brown fox');

    生成的摘要字符串适合用于asymmetric_sign ()而且asymmetric_verify ()