sql - 将 ENCRYPTBYPASSPHRASE/DECRYPTBYPASSPHRASE 与文件路径一起使用时出现问题
问题描述
我正在尝试将 ENCRYPTBYPASSPHRASE/DECRYPTBYPASSPHRASE 与 SQL Server MS 14 上的文件路径一起使用。我能够加密给定的文件路径,但是当我尝试解密时,我得到一个 NULL 值
我已经玩过参数的类型,结果没有任何变化。我试图将加密结果转换/转换为 varbinary 但没有成功
select ENCRYPTBYPASSPHRASE('stackoverflow', 'C:\Users\brogeli\Documents\Personal\select-network-option.pdf', 1,
CONVERT(varbinary, '10'))
SELECT DECRYPTBYPASSPHRASE('stackoverflow',
'0x010000005A331BC5AE1C1A7E3BDD47249768C5F51029970883DEEEED65457C7DC87EC0A020241BE11C45145850C2AA79078CD97E0704728262F825C92DC8E58C7A586A3B7EE798E435167F7DDC500706032A3F88707D5A13D88AF0A7B6DA309261F41CB56CFDE42A0DE0AC7B'
, 1, CONVERT(varbinary,
'10'
));
我希望获得所有字符的相同文件路径,但实际输出为 NULL
编辑:所以我尝试了这个并且它有效
select cast(DECRYPTBYPASSPHRASE('stackoverflow',
0x01000000BD9C213B8C9B279BA9B91E152EB9E8B37F3E37F4E4C4FAD4E104C706642B87C40838E65CA4AF7DF8276F191F04AF691C9753DB6C304D0F5733CCCD76A803A2AA7DCD3D6E9B4BDD19BE7B403DA9940B49CED28D414CCA0640D772E413DEF21B51BA343BEA3F6A10AA,
1, CONVERT(varbinary, '10'))as varchar(8000));
但是,我的想法是创建两个存储过程来加密/解密并将加密结果作为 varchar 传递给解密过程,所以我尝试强制转换/转换为 varbinary 但这不起作用:
select cast(DECRYPTBYPASSPHRASE('stackoverflow',
cast('0x01000000BD9C213B8C9B279BA9B91E152EB9E8B37F3E37F4E4C4FAD4E104C706642B87C40838E65CA4AF7DF8276F191F04AF691C9753DB6C304D0F5733CCCD76A803A2AA7DCD3D6E9B4BDD19BE7B403DA9940B49CED28D414CCA0640D772E413DEF21B51BA343BEA3F6A10AA' as varbinary),
1, CONVERT(varbinary, '10'))as varchar(8000));
关于如何做到这一点的任何想法?将 varbinary 作为 varchar 传递并转换/转换回 varbinary
解决方案
这对我有用
SELECT @@VERSION;
declare @b varbinary(max);
declare @pass nvarchar(200) ='stackoverflow';
declare @aut varbinary(max) = CONVERT(varbinary,'10');
SELECT @b = ENCRYPTBYPASSPHRASE( @pass, 'C:\Users\brogeli\Documents\Personal\select-network-option.pdf', 1, @aut);
SELECT cast(DECRYPTBYPASSPHRASE( @pass, @b, 1, @aut) as varchar(max));
输出
Microsoft SQL Server 2014 (SP2-GDR) (KB4019093) ...
C:\Users\brogeli\Documents\Personal\select-network-option.pdf
推荐阅读
- delphi - Delphi 软件包安装错误:动态链接库 (DLL) 初始化例程失败
- spring-security - 如何为 GraphQL API 配置 spring-security?
- python - 元组一维上 for 循环的向量化
- python - xarray:动态选择函数以减少数组
- python - 通过拆分列表以追加行来重塑数据框
- python - Python,稳定性并在安装链中替换它:如何安装 HP 扫描仪
- php - 如何将描述字段(HTML)与数据库中的信息联系起来?
- reactjs - 是否可以手动热重新加载使用“create-react-app”创建的 React 应用程序?
- api - Flutter:如何通过 api 调用在后台发送短信?
- python - PyCharm 不跳转到第一个搜索结果