加密数据库

用于 SQL Server Compact 4.0 的 数据库引擎使您可以加密数据库。加密数据库也受数据库密码的保护。

重要

因为加密数据库只能使用密码进行访问,所以,如果丢失加密数据库的密码,则数据将无法恢复。

加密模式

SQL Server Compact 4.0 支持以下加密模式以便对数据库进行加密。新的加密算法(加密和哈希的组合)将映射到这些加密模式。

高级加密标准 (AES) 在所有支持 SQL Server Compact 4.0 的平台上提供以便用于密钥长度 128 位和 256 位的加密。安全哈希算法 (SHA) 可用于密钥长度为 256 位和 512 位的哈希。

  1. Platform Default:在此模式下使用的算法为 AES128_SHA256,其中,AES128 是具有 128 位密钥的加密算法,SHA256 是具有 256 位密钥的哈希算法。这是所有支持 SQL Server Compact 4.0 的平台上的默认加密模式选项。

  2. Engine Default:在此模式中,使用 AES256_SHA512 对数据库进行加密,其中,AES256 是加密算法,SHA512 是安全哈希算法。默认密钥长度用于维护与 SQL Server Compact 3.5 的向后兼容性。

备注

通过将连接字符串属性 Encryption Mode, 设置为以下可用加密模式之一,可以指定用于加密数据库的加密类型: Platform Default 或 Engine Default。

创建加密数据库

您可以通过在创建数据库时提供加密和密码属性来创建加密数据库。可以通过下列方法创建加密数据库:

  • 使用 SQL 语法

    若要通过使用 SQL 语法创建加密数据库,请指定数据库密码。默认情况下这将对数据库进行加密。加密模式将为 Platform Default。例如:

    Create Database "secure.sdf" databasepassword '<password>' 
    
  • 使用 .NET Compact Framework 数据提供程序

    若要通过使用 SqlCeEngine.CreateDatabase 方法创建受密码保护的数据库,您必须在连接字符串中指定密码属性。例如:

    "data source=\secure.sdf;encryption mode=platform default;password=<enterStrongPasswordHere>;
    

    有关更多信息,请参见 MicrosoftVisual Studio 文档中的 System.Data.SqlServerCe.SqlCeEngine 类。

  • 使用 OLE DB

    若要通过使用 OLE DB provider for SQL Server Compact 创建加密数据库,您必须使用提供程序特定的属性 DBPROP_SSCE_ENCRYPTIONMODE 指定加密模式,并使用提供程序特定的属性 DBPROP_SSCE_DBPASSWORD 指定密码。

访问加密数据库

必须提供密码才能打开加密数据库。可以使用下列方法访问加密数据库:

  • 使用 SQL Server Compact 的数据提供程序

    若要通过使用 SqlCeConnection.Open 方法访问受密码保护的数据库,您必须在连接字符串中指定密码属性。例如:

    "data source=ssce.sdf; password=<enterStrongPasswordHere>"
    

    有关更多信息,请参见 Visual Studio 文档中的 System.Data.SqlServerCe.SqlCeConnection 类。

  • 使用 OLE DB

    若要打开 OLE DB 中受密码保护的数据库,必须指定提供程序特定的属性 DBPROP_SSCE_DBPASSWORD。

备注

如果试图打开使用 SQL Server Compact 的早期版本创建的数据库文件,您将收到一条消息,告知您无法打开该文件。其原因在于,针对 SQL Server Compact 4.0 的数据库文件格式不同于早期版本。若要使用 SQL Server Compact 4.0 打开数据库文件,必须首先升级该数据库文件。

您可以将 SQL Server Compact 3.1/3.5 数据库升级到 SQL Server Compact 4.0 数据库,但不能升级到 SQL Server Compact 2.0。有关详细信息,请参阅从早期版本进行升级 (SQL Server Compact)

请参阅

任务

如何保护数据库安全 (Visual Studio)