プレーンテキストファイルのユーザー名とパスワードから[書き込みを読む]がデータを保護するには悪い方法ですが、他にもIVの暗号解読アルゴリズムを使用する方法があります。クライアント側でデータを保護する
0
A
答えて
0
パスワードをSHA1などのハッシュ文字でエンコードすることができます。
Function getSHA1Hash(ByVal strToHash As String) As String
Dim sha1Obj As New Security.Cryptography.SHA1CryptoServiceProvider
Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(strToHash)
bytesToHash = sha1Obj.ComputeHash(bytesToHash)
Dim strResult As String = ""
For Each b As Byte In bytesToHash
strResult += b.ToString("x2")
Next
Return strResult
End Function
使い方は簡単です!ユーザーを認証するために必要なとき
Console.Write(getSHA1Hash("password"))
だから、あなたは、自分の入力したパスワードを取る上記の関数を使用して、それのハッシュを計算し、それが簡単なIF句と同じだことを確認することができます
if getSHA1Hash(input_password) = HASHED_OLD_PASSWORD then Authenticate()
SHA1ハッシュはあらゆる可能性を強要することなく解読できないので、かなり安全です。
1
テキストを再度復号化する必要があるかどうかを判断する必要があります。私は、少なくともパスワードについては、一方向のハッシュを使用することをお勧めします。理想的には、パスワードごとに別々のランダムな塩を使うべきです:password + salt = hash。 saltとhashを格納する必要がありますが、暗号の秘密ではないため、プレーンテキストで格納できます。実装例(SHA256を使用):
public class SHA256
{
public static string GetHash(string password, string salt)
{
UTF8Encoding encoder = new UTF8Encoding();
SHA256Managed sha256 = new SHA256Managed();
byte[] hashedDataBytes = sha256.ComputeHash(encoder.GetBytes(salt + password));
return ByteArrayToString(hashedDataBytes);
}
/// <summary>
/// Generates a random 16 character alpha-numeric salt
/// </summary>
/// <returns></returns>
public static string GenerateRandomSalt()
{
const string allowedChars = "ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
char[] chars = new char[16];
var rd = new Random((int)DateTime.Now.Ticks);
for (int i = 0; i < 16; i++)
{
chars[i] = allowedChars[rd.Next(0, allowedChars.Length)];
}
return new string(chars);
}
/// <summary>
/// Converts supplied byte array to hex format string.
/// </summary>
/// <param name="inputArray"></param>
/// <returns></returns>
private static string ByteArrayToString(byte[] inputArray)
{
StringBuilder output = new StringBuilder("");
for (int i = 0; i < inputArray.Length; i++)
{
output.Append(inputArray[i].ToString("X2")); //Return in hex format
}
return output.ToString();
}
}
GenerateRandomSaltメソッドを使用してパスワードの塩を生成することができます。 SOのこの種のことをカバーする他にもたくさんの質問があります。
関連する問題
- 1. クライアント側にデータを保存する - 操作から保護する方法?
- 2. クライアント/サーバーのデータを保護する。 (Android)
- 3. クライアント側のセキュリティで保護されたURLを傍受する
- 4. Vue.jsでクライアント側のルートを保護する方法は?
- 5. APIキーでクライアント側で使用するRESTサービスの保護
- 6. バックエンドのクライアント側からデータを保存
- 7. Angular 2クライアント側アプリケーションでAPIキーを非表示/保護する方法は?
- 8. ハイブリッドモバイルアプリ:クライアント側で実用的なデータを保存する
- 9. クライアント側の処理のためのデータベースキーの保護
- 10. Javascriptを保護する(サーバー側?)
- 11. hmacでjavascriptクライアントをセキュリティで保護
- 12. クレジットカード情報の保存?クライアント側とサーバー側でのクレジットカード情報の保護と暗号化
- 13. クライアント側のファイルにデータを保存する
- 14. データを保存する最良の方法クライアント側
- 15. Javaクライアント.classファイル保護
- 16. Spring OAuth2クライアント、CSRF保護
- 17. UsernameToken(SOAPセキュリティヘッダー)でWSクライアントを保護
- 18. クライアント側のMongoDB APIをどのようにして保護しますか?
- 19. JavaScriptでデータを保護
- 20. Oauth 2.0クライアントIDとクライアントの秘密を保護する方法
- 21. 新規性がクライアント側であるSaaSアプリケーションを保護するにはどうすればよいですか?
- 22. NSURLCacheとデータ保護
- 23. マルチプラットフォームのデータ保護
- 24. NodeJSでオブジェクトサーバー側を保護/格納する方法は?
- 25. クライアント側のコードを保護するにはどうすればよいですか?ライセンスキー?
- 26. クライアント/サーバーでの通信を保護する方法は?
- 27. サーバー上のデータを保護
- 28. Firebaseのデータを保護する
- 29. データIonicV1サービスを保護する方法
- 30. PHPクライアント用WCF Webサービスのセキュリティ保護
ありがとうmindw0rk、私の問題に大きなアプローチ、あなたの結果を実装する:-) – sarepta
ハッシュは_not_暗号化です –
私の用語を修正しました。これは依然として質問者のための良い解決策です。 – carlossless