Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql server中使用相同长度的字符进行加密和解密_Sql_Sql Server_Database_Encryption_Sql Server 2014 - Fatal编程技术网

在sql server中使用相同长度的字符进行加密和解密

在sql server中使用相同长度的字符进行加密和解密,sql,sql-server,database,encryption,sql-server-2014,Sql,Sql Server,Database,Encryption,Sql Server 2014,我想使用sql server对长度相同的字符串进行加密,并对长度相同的字符串进行解密。例如: Encryption Input: Encrypt("002581") -- with 6 characters Result: a&pE12 -- output with same 6 characters in encrypted form Decryption Input: Decrypt("a&pE12") -- with 6 characters Result: 00258

我想使用sql server对长度相同的字符串进行加密,并对长度相同的字符串进行解密。例如:

Encryption
Input: Encrypt("002581") -- with 6 characters

Result: a&pE12 -- output with same 6 characters in encrypted form

Decryption
Input: Decrypt("a&pE12") -- with 6 characters
Result: 002581 -- output with same 6 characters in decrypted form

简短回答:没有这样的安全加密方案

更长的答案:任何类型的加密方案都会混淆纯文本的内容,使其无法与来自同一消息空间的其他消息区分开来。要做到这一点,生成的所有密码文本必须具有相同的长度(理想情况下),而不考虑输入的纯文本。至少长度应该不同于纯文本的长度


请不要考虑这样的加密技术。根据定义,它是不安全的。

即使有办法做到这一点,您的需求也可能会限制可用的加密算法。此外,如果一个恶意的人发现了这一点,他将已经知道实际未加密密码的长度。也许你可以告诉我们为什么你认为你需要这个。基本上我想用相同长度的字符验证记录的输入代码。这就是为什么我需要使用sql server技术进行加密和解密。当保存密码验证器时,仅使用哈希函数是不够的,仅添加一个salt对提高安全性几乎没有作用。相反,使用诸如
PBKDF2
Rfc2898DeriveBytes
Argon2
password\u hash
Bcrypt
等函数或类似函数,持续时间约为100ms。重点是让攻击者花费大量时间通过暴力手段查找密码。