public byte[] CryptDeriveKey(
string algname,
string alghashname,
int keySize,
byte[] rgbIV
)
algname にはどのようなオプションがあるのか、誰か教えてもらえますか? AES-128 および AES-256 の暗号化アルゴリズムを指定したい場合、algname には何を入力すればよいですか?
public byte[] CryptDeriveKey(
string algname,
string alghashname,
int keySize,
byte[] rgbIV
)
algname にはどのようなオプションがあるのか、誰か教えてもらえますか? AES-128 および AES-256 の暗号化アルゴリズムを指定したい場合、algname には何を入力すればよいですか?
100%確信はありませんが、algname
あなたのアルゴリズム名です。keySize
キーのサイズです。
これを使用AES-128
して、AES-256
好きにする必要があります。
CryptDeriveKey("AES", "SHA1", 128, aes.IV)
と
CryptDeriveKey("AES", "SHA1", 256, aes.IV)
から詳細を確認してくださいMSDN
。
メソッドの逆コンパイルされたコードを次に示しますPasswordDeriveBytes.CryptDeriveKey
。
[SecuritySafeCritical]
public byte[] CryptDeriveKey(string algname, string alghashname, int keySize, byte[] rgbIV)
{
if (keySize < 0)
{
throw new CryptographicException(Environment.GetResourceString("Cryptography_InvalidKeySize"));
}
int algidHash = X509Utils.NameOrOidToAlgId(alghashname, OidGroup.HashAlgorithm);
if (algidHash == 0)
{
throw new CryptographicException(Environment.GetResourceString("Cryptography_PasswordDerivedBytes_InvalidAlgorithm"));
}
int algid = X509Utils.NameOrOidToAlgId(algname, OidGroup.AllGroups);
if (algid == 0)
{
throw new CryptographicException(Environment.GetResourceString("Cryptography_PasswordDerivedBytes_InvalidAlgorithm"));
}
if (rgbIV == null)
{
throw new CryptographicException(Environment.GetResourceString("Cryptography_PasswordDerivedBytes_InvalidIV"));
}
byte[] o = null;
DeriveKey(this.ProvHandle, algid, algidHash, this._password, this._password.Length, keySize << 0x10, rgbIV, rgbIV.Length, JitHelpers.GetObjectHandleOnStack<byte[]>(ref o));
return o;
}
これはメソッドの逆コンパイルされたコードですNameOrOidToAlgId
。
internal static int NameOrOidToAlgId(string oid, OidGroup oidGroup)
{
if (oid == null)
{
return 0x8004;
}
string str = CryptoConfig.MapNameToOID(oid, oidGroup);
if (str == null)
{
str = oid;
}
int algIdFromOid = GetAlgIdFromOid(str, oidGroup);
switch (algIdFromOid)
{
case 0:
case -1:
throw new CryptographicException(Environment.GetResourceString("Cryptography_InvalidOID"));
}
return algIdFromOid;
}
Reflector
ここには、解決策を見つけるのが好きな逆アセンブラはいません。ある場合は、メソッドにアクセスしmscorlib.dll
て逆コンパイルしPasswordDerivedBytes.CryptDeriveKey
ます。サポートされている文字列が表示されます。
ちなみに、AESはサポートされていません:こちら