加密和解密银行帐户信息

时间:2014-12-15 21:38:25

标签: asp.net

我有存储在SQL Server中的bankAccountnumber和路由号。

如何以最安全的方式加密这些信息?

我应该使用什么数据类型?

我想用盐使用Hashcode,但我不知道如何解密?

SQL Server表

Salt    varbinary(250)  not null
bankAccountnumber binary(16)    not null

代码

对于代码工作以下的加密,但我不知道如何解密bankaccount数。我不知道我使用的是正确的数据类型。

public void CreateNewAccount(AccountManagementView userAccount)
{
            byte[] salt = System.Text.Encoding.UTF8.GetBytes("hereissalt");
            byte[] hashedbankaccnumber = CreateSaltedField(salt, userAccount.bankAccountnumber);

            BuildInsertQueryForTable("User")
                .SetColumnToValue("ID", Guid.NewGuid())
                .SetColumnToValue("EmailAddress", userAccount.EmailAddress)
                .SetColumnToValue("Salt", salt)
                .SetColumnToValue("bankAccountnumber", hashedbankaccnumber )
                .ExecuteNonQuery();
}

这是生成加密密钥的函数

private static byte[] CreateSaltedField(byte[] salt, string bankAccountnumber)
{
    return new HMACMD5(salt).ComputeHash(System.Text.Encoding.UTF8.GetBytes(bankAccountnumber));
}

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

  

我想用盐使用Hashcode,但我不知道如何解密?

你不能像SHAXXX那样使用Hash with Salt。它是单向加密,用于加密密码。

您可能希望看一下非常强大的TripleDESCryptoServiceProvider

仅供参考: 通常情况下,银行知道需求是什么,需求类型来自上层。请咨询您的主管。