C# 从w到~的字母的加密形式存储为?在sql server中

C# 从w到~的字母的加密形式存储为?在sql server中,c#,sql-server,encryption,C#,Sql Server,Encryption,我正在加密密码并将加密密码存储在数据库中。加密的密钥是8。例如,如果我的密码是abc,则abc的加密形式将是ijk,存储在数据库中。直到字母v,这才正常工作。v的ASCII值为118。因此,118+8=126,即~将以v的加密形式存储。但是,从字母w到~即;从119到126,存储在数据库中的这些字母的加密形式是?。有没有更好的方法来加密这8个字母 我正在加密密码并将加密密码存储在数据库中 也被称为“做错了”。您不加密和存储密码。你应该(用盐)加密散列它们 加密的密钥是8。例如,如果我的密码是ab

我正在加密密码并将加密密码存储在数据库中。加密的密钥是8。例如,如果我的密码是
abc
,则abc的加密形式将是
ijk
,存储在数据库中。直到字母
v
,这才正常工作。
v
的ASCII值为118。因此,118+8=126,即<代码>~将以v的加密形式存储。但是,从字母
w
~
即;从119到126,存储在数据库中的这些字母的加密形式是
。有没有更好的方法来加密这8个字母

我正在加密密码并将加密密码存储在数据库中

也被称为“做错了”。您不加密和存储密码。你应该(用盐)加密散列它们

加密的密钥是8。例如,如果我的密码是
abc
,则abc的加密形式将是
ijk
,存储在数据库中

这不是加密;这几乎是混淆

有没有更好的方法来加密这8个字母

如果要存储非文本字符,请使用
varbinary(…)
或使用base-64将任意二进制存储为字符串数据(第一种更有效)

然而,必须强调的是,您当前的流程是非常非常错误的,您不应该这样做。我不愿意帮你犯这样一个根本性的安全错误


正确的做法是使用一个众所周知的、可靠的安全散列函数(使用salt),对密码进行散列,只存储散列。要测试密码,您需要对用户输入的内容运行相同的哈希算法(和相同的salt),并比较哈希值。你应该而不是,即使有上帝的权限和所有魔法数字的知识,你也应该能够解密密码数据以恢复实际密码。

这不是加密。至少,不是正派人所用的那种。它太弱了,你最好不要用它。如果您想使用加密,那么就使用一个实际的、构建良好的强大实现。在数据库表中,将密码字段数据类型更改为nvarchar或ntext以支持这些字符。“有更好的方法吗?”问题应该是“有更坏的方法吗?”@Podyluska嗯,可能是ROT13。为了增加安全性,我总是申请ROT13两次。