私は、Webサービスに接続するモバイルアプリケーションを作成しています。パスワードを使用してシステムにログインする必要があります。それは不可能ですので、私のXamarin PCLプロジェクトで使用することができないWebアプリケーションのパスワードをハッシュするPCLCryptoの既存のキーを使用してパスワードをハッシュする方法は?
Byte[] Initial = <Key goes here>
MD5CryptoServiceProvider Provider = new MD5CryptoServiceProvider();
List<Byte> Encoding = new List<Byte>(Initial);
Encoding.AddRange(ASCIIEncoding.ASCII.GetBytes(inputString));
return Convert.ToBase64String(Provider.ComputeHash(Encoding.ToArray()));
キーやコード:パスワードは、この方法を使用してハッシュされたMD5ハッシュ化されたパスワードなどのサーバーに保存されていますXamarin PCLで 'MD5CryptoServiceProvider'を使用する。
xamarinアプリケーションで、Webサービスのバージョンと比較する前にパスワードをハッシュするのと同等のメソッドを作成する必要があります。
これを行うにはPCLCryptoを選択しましたが、元々パスワードを暗号化するのに使用されたものと同じキーを含む場所を見つけることができませんでした。あなたの助けを事前に
Byte[] Initial = <the same key as was used to originally cache it>
// step 1, calculate MD5 hash from input
var hasher = WinRTCrypto.HashAlgorithmProvider.OpenAlgorithm(HashAlgorithm.Md5);
byte[] inputBytes = Encoding.UTF8.GetBytes(inputString);
byte[] hash = hasher.HashData(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("X2"));
}
return sb.ToString();
ありがとう:
これはXamarinコードです。
なぜBase64クラスのAndroidを直接使用しないのですか?その場合は、各プレートフォーム用に実装する必要がありますが、頭痛を覚えることはありません..ちょっとアドバイス.. –
それはPCLプロジェクトですから。 – connersz
OK ..私たちはxamarinフォームプロジェクトについて話していますか?あなたは comparepasswords(userpwd、hashedpwd) 作成した各plateformで 関数を呼び出す 使用の依存サービス{ //ハッシュuserpwdをして //比較は trueまたはfalseを返します} .. したがって、base64クラスを使用することができます。 –