0

Rsa関連のもので「全体」の話を明確にすることはできますか。(パディングか何かが原因だと思います)。

Ok。私の一般的な目的は、パスワードを暗号化して(一方向のみ)、ハッシュされた状態でデータベースに保存することです。

私のアプローチは次のとおりです。

この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#)。

ありがとうございました!

4

0 に答える 0