sql-server - SQL Server 将算法从 TRIPLE_DES 更改为 AES_128
问题描述
我想更改 SQL Server 数据库的算法,因为它将从 2008R2 更新到 2017。
我想要删除并放置 AES 128 的 TRIPLE DES 代码是:
CREATE MASTER KEY ENCRYPTION
BY PASSWORD ='mypassword'
go
CREATE CERTIFICATE my_certificate
ENCRYPTION BY PASSWORD = 'mypassword'
WITH SUBJECT = 'Password',
EXPIRY_DATE = '12/31/2199';
go
CREATE SYMMETRIC KEY my_symmetric_key
WITH ALGORITHM = TRIPLE_DES
ENCRYPTION BY CERTIFICATE my_certificate;
go
GRANT CONTROL ON CERTIFICATE::my_certificate TO public
GO
GRANT VIEW DEFINITION ON SYMMETRIC KEY::my_symmetric_key TO public
GO
GRANT REFERENCES ON SYMMETRIC KEY::my_symmetric_key TO public
GO
GRANT CONTROL ON SYMMETRIC KEY::my_symmetric_key TO public
GO
我试图将它们全部删除并创建一个新的 AES 128:
DROP SYMMETRIC KEY my_symmetric_key
go
DROP CERTIFICATE my_certificate
go
DROP MASTER KEY
go
CREATE MASTER KEY ENCRYPTION
BY PASSWORD ='mypassword'
go
CREATE CERTIFICATE my_certificate
WITH SUBJECT = 'Password',
EXPIRY_DATE = '12/31/2029';
CREATE SYMMETRIC KEY my_symmetric_key
WITH ALGORITHM = AES_128, IDENTITY_VALUE = 'myidentityvalue', KEY_SOURCE = 'mykeysource'
ENCRYPTION BY PASSWORD = 'mypassword';
GRANT CONTROL ON CERTIFICATE::my_certificate TO public
GO
GRANT VIEW DEFINITION ON SYMMETRIC KEY::my_symmetric_key TO public
GO
GRANT REFERENCES ON SYMMETRIC KEY::my_symmetric_key TO public
GO
GRANT CONTROL ON SYMMETRIC KEY::my_symmetric_key TO public
GO
虽然我没有收到错误,但我尝试了 ENCRYPTION
OPEN SYMMETRIC KEY my_symmetric_key
DECRYPTION BY CERTIFICATE my_certificate WITH PASSWORD = 'mypassword'
..
SELECT CAST(EncryptByKey(Key_Guid('my_symmetric_key') , @thingtodecrypt) as varbinary)
我得到这个错误:
The key is not encrypted using the specified decryptor
任何帮助表示赞赏
解决方案
推荐阅读
- excel - Power Query - 连接和转置
- c# - 使用 SmsManager 打开默认短信应用
- azure - azure blob 存储静态站点托管重定向到后端 Web 应用程序
- java - 使用命令停止 if 循环
- sql - Laravel 日期分组按日期和计数
- laravel - 使用 KCFinder 将图像上传到 CKEditor 时,文件上传期间发生 HTTP 错误(404:找不到文件)
- python - Add error bar to a single column in pandas plot
- xslt - xsl 2.0 基于不同元素的多重嵌套
- c# - mdf 文件连接无法正常工作
- php - PHP加密,加密时考虑空行