C#RSACryptoServiceProvider。填充间隙。 (密码加密)

时间:2013-06-10 15:15:06

标签: c# encoding hash passwords rsa

任何人都可以用 Rsa 相关的东西澄清“整个”故事。 (我想,那是因为填充或其他原因)。

确定。我的总体目标是加密密码(仅限一种方式)以哈希状态存储在数据库中。

我的方法是:

我使用此How to Generate Unique Public and Private Key via RSA(常见)方法创建私钥/公钥

const int PROVIDER_RSA_FULL = 1;
const string CONTAINER_NAME = "KeyContainer";
CspParameters cspParams;
cspParams = new CspParameters(PROVIDER_RSA_FULL);
cspParams.KeyContainerName = CONTAINER_NAME;
cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
rsa = new RSACryptoServiceProvider(cspParams);

string publicPrivateKeyXML = rsa.ToXmlString(true);
string publicOnlyKeyXML = rsa.ToXmlString(false);
// do stuff with keys...

并在需要时执行此操作:

var rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(publicOnlyKeyXML);
var valueToEncode = Console.ReadLine();
Console.WriteLine(Convert.ToBase64String(rsa.Encrypt(Encoding.UTF8.GetBytes(valueToEncode), false)));
// initially that's rsa.Encrypt(...

每个新时间我做同样的值加密,我收到不同的值,这不适合以这种方式存储密码(因为我不解密它用于用户身份验证,但只是比较散列值。)

有人能用编码内容澄清情况吗?

此外,目前密码编码为哈希的常见做法是什么(.NET / C#)。

谢谢!

0 个答案:

没有答案
相关问题