ユニバーサルWindowsアプリケーションの下でAES128-EBC暗号化文字列を取得する際に助けが必要です。
文字列にパスワードをキーとして使用しています。 32ビット長のMD5ハッシュ値を使って、AES128-EBCでテキストを暗号化したいと思います。 は今、私はMD5Hashを作成するためにこれを使用しています:UESのAES128-ECB
public string GetMD5Hash(String strMsg)
{
string strAlgName = HashAlgorithmNames.Md5;
IBuffer buffUtf8Msg = CryptographicBuffer.ConvertStringToBinary(strMsg, BinaryStringEncoding.Utf8);
HashAlgorithmProvider objAlgProv = HashAlgorithmProvider.OpenAlgorithm
string strAlgNameUsed = objAlgProv.AlgorithmName;
IBuffer buffHash = objAlgProv.HashData(buffUtf8Msg);
if (buffHash.Length != objAlgProv.HashLength)
{
throw new Exception("There was an error creating the hash");
}
string hex = CryptographicBuffer.EncodeToHexString(buffHash);
return hex;
}
と暗号化のために、このコードを:
public string Encrypt(string input, string pass)
{
SymmetricKeyAlgorithmProvider provider = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesEcbPkcs7);
CryptographicKey key;
string encrypted = "";
byte[] keyhash = Encoding.ASCII.GetBytes(GetMD5Hash(pass));
key = provider.CreateSymmetricKey(CryptographicBuffer.CreateFromByteArray(keyhash));
IBuffer data = CryptographicBuffer.CreateFromByteArray(Encoding.Unicode.GetBytes(input));
encrypted = CryptographicBuffer.EncodeToBase64String(CryptographicEngine.Encrypt(key, data, null));
return encrypted;
}
私はSymmetricAlgorithmNames.AesEcb
を使用していたとき、私はSymmetricAlgorithmNames.AesEcbPkcs7
を使用していますなぜ原因は出力文字列が空です。なぜか分からない。 私の質問は:私のコードはAES128-ECB暗号化を作成していますか?なぜなら、私はそれが本当にわからないからです。その暗号化されたデータを待っているソフトウェアはそれを認識しないので、それを解読することはできません。
セキュリティが必要な場合:1. ECBモードを使用しないでください。そのモードも安全ではありません。[ECBモード](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_Codebook_.28ECB.29)ペンギンにランダムivのCBCモードを使用し、暗号化されたデータの前に追加します。 2. MD5を使用して暗号化キーを取得しないでください。約100msの間、ランダムな塩でHMACを反復します(塩はハッシュと共に保存する必要があります)。 password_hash、PBKDF2、Bcryptなどの関数を使用します。要点は、攻撃者が無差別にパスワードを見つけるのに多くの時間を費やすことです。 – zaph
@zaph残念ながら、ECBや他のUWPに欠けている部分に応じてIETF規格さえあります。あなたはいつも別のものを使うことはできません。 –
@LexLi確かに、開発者が横断するいくつかの同じコード以外の理由がなくても、多くの使用法があります。 IOW、ECBモードを使用する理由を理解する必要があります。ここではパスワードキーの導出にMD5ハッシュを使用していますので、ECBモードが正当な理由や理解なしに使用されていると誤って想定しています。 – zaph