반응형
C #의 해시 문자열
.NET에서 해시 문자열을 얻으려고 할 때 문제가 c#
있습니다.
이미 몇 개의 웹 사이트를 시도했지만 대부분은 파일을 사용하여 해시를 얻습니다. 다른 문자열은 너무 복잡합니다. 다음과 같은 웹용 Windows 인증의 예를 찾았습니다.
FormsAuthentication.HashPasswordForStoringInConfigFile(tbxPassword.Text.Trim(), "md5")
파일 이름이 포함 된 문자열을보다 안전하게 만들려면 해시를 사용해야합니다. 어떻게 할 수 있습니까?
예:
string file = "username";
string hash = ??????(username);
"md5"가 아닌 다른 해싱 알고리즘을 사용해야합니까?
using System.Security.Cryptography;
public static byte[] GetHash(string inputString)
{
HashAlgorithm algorithm = SHA256.Create();
return algorithm.ComputeHash(Encoding.UTF8.GetBytes(inputString));
}
public static string GetHashString(string inputString)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in GetHash(inputString))
sb.Append(b.ToString("X2"));
return sb.ToString();
}
추가 참고 사항
- MD5 및 SHA1은 오래되고 안전하지 않은 알고리즘이므로이 솔루션은 SHA256을 사용합니다. 또는 주석에서 지적한대로 BCrypt 또는 Scrypt 를 사용할 수 있습니다 .
- 또한 주석에서 지적한대로 해시를 " 솔팅 "하고 입증 된 암호화 알고리즘을 사용하십시오.
암호 저장 목적으로 해시 문자열을 얻는 가장 빠른 방법은 다음 코드입니다.
internal static string GetStringSha256Hash(string text)
{
if (String.IsNullOrEmpty(text))
return String.Empty;
using (var sha = new System.Security.Cryptography.SHA256Managed())
{
byte[] textData = System.Text.Encoding.UTF8.GetBytes(text);
byte[] hash = sha.ComputeHash(textData);
return BitConverter.ToString(hash).Replace("-", String.Empty);
}
}
비고 :
- 메서드가 자주 호출되는 경우
sha
변수 생성은 클래스 필드로 리팩토링되어야합니다. - 출력은 인코딩 된 16 진수 문자열로 표시됩니다.
나는 당신의 질문의 전체 범위를 정말로 이해하지 못하지만 필요한 모든 것이 문자열의 해시라면 그것을 얻는 것은 매우 쉽습니다.
GetHashCode 메서드를 사용하십시오.
이렇게 :
string hash = username.GetHashCode();
나는 당신이 찾고있는 것이 해싱이 아니라 암호화라고 생각합니다. 해싱을 사용하면 "hash"변수에서 원래 파일 이름을 검색 할 수 없습니다. 암호화를 사용하면 할 수 있으며 안전합니다.
.NET의 암호화에 대한 자세한 내용은 VB.NET 을 사용하는 ASP.NET의 AES를 참조하십시오 .
//Secure & Encrypte Data
public static string HashSHA1(string value)
{
var sha1 = SHA1.Create();
var inputBytes = Encoding.ASCII.GetBytes(value);
var hash = sha1.ComputeHash(inputBytes);
var sb = new StringBuilder();
for (var i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("X2"));
}
return sb.ToString();
}
참고URL : https://stackoverflow.com/questions/3984138/hash-string-in-c-sharp
반응형
'programing tip' 카테고리의 다른 글
IBNSLayoutConstraint라는 클래스를 인스턴스화 할 수 없습니다. (0) | 2020.11.03 |
---|---|
Windows에서 지정된 이름의 폴더를 재귀 적으로 삭제하는 명령 줄 도구? (0) | 2020.11.03 |
ASP .NET MVC 필드 별 수준에서 클라이언트 쪽 유효성 검사 사용 안 함 (0) | 2020.11.03 |
CentOS 명령 줄에서 파일을 검색하는 방법 (0) | 2020.11.03 |
Lisp 커뮤니티가 왜 그렇게 분열되어 있습니까? (0) | 2020.11.03 |