2016-11-10 7 views
1

ユニバーサルアプリケーションをコーディングしていますが、md5またはSHAアルゴリズムでファイルをハッシュするにはどうすればよいですか?UWPのファイル(MD5、SHA..v.v ..)をハッシュする方法

私は検索しました:system.security.cryptographyを見つけましたが、私のプロジェクトでは利用できません。

私はUWPでのVisual Studio 2015

答えて

5

を使用している、それはWindows.Security.Cryptography namespaceWindows.Security.Cryptography.Core namespaceです。

CryptographicBuffer classには、このクラスの使用方法を示すサンプルがあります。

private string strAlgNameUsed; 

public string GetMD5Hash(String strMsg) 
{ 
    string strAlgName = HashAlgorithmNames.Md5; 
    IBuffer buffUtf8Msg = CryptographicBuffer.ConvertStringToBinary(strMsg, BinaryStringEncoding.Utf8); 

    HashAlgorithmProvider objAlgProv = HashAlgorithmProvider.OpenAlgorithm(strAlgName); 
    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; 
} 
+0

ECBモードを使用しないでください、それは安全で、参照[ECBモード](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_Codebook_:ここ

はMD5ハッシュを得ることについての私のデモです.28ECB.29)、ペンギンまでスクロールします。 代わりにランダムIVのCBCモードを使用して、復号化に使用するためにIVで暗号化されたデータのプレフィックスを付けるだけです。さらに、パスワードをハッシュするだけでは不十分で安全ではないため、PBKDF2( 'Rfc2898DeriveBytes')などの約100msの反復時間を必要とするパスワード派生関数が必要です。しかし、この質問は暗号化については尋ねることはなく、ハッシングだけについては問いません。 – zaph

+0

@zaph、はい、OPはコードを投稿しませんでしたが、私は良い答えではないと思われる文書のみをここに提供することができますので、簡単なデモを行いヘルプを提供します。それはECBモードについては、あなたが正しいです、それは安全ではない、私は暗号化部分を削除するために私の答えを編集しました。 –

+0

実際には、キー導出のためのMD5の使用についての詳細がありました。キーの攻撃は、実際のキーでは無理な力ではありませんが、頻繁に使用されるパスワードのリストを使用してキーが得られます。このキー導出方法のために、かなりのCPU時間を消費しなければならない。 – zaph

関連する問題