CREATE ASYMMETRIC KEY (Transact-SQL)

在数据库中创建非对称密钥。

主题链接图标Transact-SQL 语法约定

语法

CREATE ASYMMETRIC KEY Asym_Key_Name 
   [ AUTHORIZATION database_principal_name ]
   {
      FROM <Asym_Key_Source>
      |
      WITH ALGORITHM = { RSA_512 | RSA_1024 | RSA_2048 }
   }
      [ ENCRYPTION BY PASSWORD = 'password' ] 

<Asym_Key_Source>::=
   FILE = 'path_to_strong-name_file'
   |
   EXECUTABLE FILE = 'path_to_executable_file'
   |
   ASSEMBLY Assembly_Name

参数

  • FROM Asym_Key_Source
    指定从中加载非对称密钥对的源。
  • AUTHORIZATION database_principal_name
    指定非对称密钥的所有者。所有者不能是角色或组。如果省略该选项,则所有者为当前用户。
  • FILE ='path_to_strong-name_file'
    指定从中加载密钥对的强名称文件所在的路径。
  • EXECUTABLE FILE ='path_to_executable_file'
    指定从中加载公钥的程序集文件。
  • ASSEMBLY Assembly_Name
    指定从中加载公钥的程序集的名称。
  • ENCRYPTION BY PASSWORD ='password'
    指定用于对私钥进行加密的密码。如果未提供该子句,则使用数据库主密钥对私钥进行加密。password 最多为 128 个字符。

备注

“非对称密钥**”是数据库级的安全对象实体。该实体的默认格式包含公钥和私钥。当未使用 FROM 子句执行时,CREATE ASYMMETRIC KEY 会生成新的密钥对。当使用 FROM 子句执行时,CREATE ASYMMETRIC KEY 会从文件中导入密钥对,或从程序集中导入公钥。

默认情况下,私钥受数据库主密钥保护。如果尚未创建任何数据库主密钥,则需要使用密码保护私钥。如果不存在数据库主密钥,则可以选择性地使用密码。

私钥的长度可以为 512、1024 或 2048 位。

权限

要求对数据库具有 CREATE ASYMMETRIC KEY 权限。如果指定了 AUTHORIZATION 子句,则需要对数据库主体具有 IMPERSONATE 权限,或者对应用程序角色具有 ALTER 权限。

示例

A. 创建非对称密钥

以下示例使用 RSA_2048 算法创建名为 PacificSales09 的非对称密钥,并使用密码保护私钥。

CREATE ASYMMETRIC KEY PacificSales09 
    WITH ALGORITHM = RSA_2048 
    ENCRYPTION BY PASSWORD = 'bmsA$dk7i82bv55foajsd9764'; 
GO

B. 通过文件创建非对称密钥,为用户提供授权

以下示例通过文件中存储的密钥对创建非对称密钥 PacificSales19,然后授权用户 SyedAbbas 使用该非对称密钥。

CREATE ASYMMETRIC KEY PacificSales19 AUTHORIZATION SyedAbbas  
    FROM FILE = ' c:\PacSales\Managers\SyedAbbasCerts.tmp'  
    ENCRYPTION BY PASSWORD = '35698ofg0sjlkfLKJ4548872$$$2';
GO

请参阅

参考

ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)

其他资源

选择加密算法
加密层次结构

帮助和信息

获取 SQL Server 2005 帮助