首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Server中检测varchar值是否已被EncryptByPassPhrase()加密

在Server中检测varchar值是否已被EncryptByPassPhrase()加密
EN

Database Administration用户
提问于 2022-02-02 23:16:25
回答 1查看 205关注 0票数 0

从表varchar(100)中名为PasswordD1列开始,在表Users中有一条记录,在对该列执行更新以在Password列上使用EncryptByPassPhrase()加密该列之后,将生成以下varbinary(8000)字符串:

0x0342342565CF0

...and为了简单起见,字符串被缩写为....

为了能够将加密的varbinary(8000)输出存储在同一个Password列中,加密函数被包装为convert(varchar(8000), EncryptByPassPhrase())

运行select * from Users;将产生它的两列和一条记录的输出:

姓名密码

如您所见,Password显示为空白。但是,运行Select len(Password);会显示一个52值,因此肯定有一个字符串存储在Password中,其中包含不可打印的字符。

因此,问题是,如何测试空白的varchar(100)字符串的前两个变量字符是0x

这样做的目的是创建一个包装器加密函数来决定字段是否已经加密,而不是在检测到传递给它的字符串以0x开始时再次加密吗?

EN

回答 1

Database Administration用户

发布于 2022-02-03 16:33:03

  • 永远不要存储加密密码。存储盐渍密码的单向散列。
  • 不要将VARBINARY值存储在VARCHAR列中,以免您冒着永远得不到它的风险。
  • 客户端软件向您展示以0x开头的二进制字符串的十六进制表示形式这一事实并不意味着0x是值的一部分。
  • 没有可靠的方法可以通过查看字节序列来判断该序列是否以任何方式加密。
票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/306949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档