C #에서 SHA1 알고리즘을 사용한 해싱
byte[]
사용하여 SHA1
알고리즘을 사용하여 주어진 배열 을 해시하고 싶습니다 SHA1Managed
. 해시는 단위 테스트에서 올 것이다. 예상 해시는 (대소 문자 구분)입니다.byte[]
0d71ee4472658cd5874c5578410a9d8611fc9aef
이것을 어떻게 달성 할 수 있습니까?
public string Hash(byte [] temp)
{
using (SHA1Managed sha1 = new SHA1Managed())
{
}
}
해시의 "표준"텍스트 서식을 원하는 사용자는 다음과 같이 사용할 수 있습니다.
static string Hash(string input)
{
using (SHA1Managed sha1 = new SHA1Managed())
{
var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(input));
var sb = new StringBuilder(hash.Length * 2);
foreach (byte b in hash)
{
// can be "x2" if you want lowercase
sb.Append(b.ToString("X2"));
}
return sb.ToString();
}
}
이것은와 같은 해시를 생성합니다 0C2E99D0949684278C30B9369B82638E1CEAD415
.
또는 코드 골프 버전의 경우 :
static string Hash(string input)
{
var hash = new SHA1Managed().ComputeHash(Encoding.UTF8.GetBytes(input));
return string.Concat(hash.Select(b => b.ToString("x2")));
}
public string Hash(byte [] temp)
{
using (SHA1Managed sha1 = new SHA1Managed())
{
var hash = sha1.ComputeHash(temp);
return Convert.ToBase64String(hash);
}
}
편집하다:
다음과 같이 바이트 배열을 문자열로 변환 할 때 인코딩을 지정할 수도 있습니다.
return System.Text.Encoding.UTF8.GetString(hash);
또는
return System.Text.Encoding.Unicode.GetString(hash);
이것이 제가 함께했던 것입니다. 최적화하고 싶은 분은 https://stackoverflow.com/a/624379/991863을 확인 하십시오 .
public static string Hash(string stringToHash)
{
using (var sha1 = new SHA1Managed())
{
return BitConverter.ToString(sha1.ComputeHash(Encoding.UTF8.GetBytes(stringToHash)));
}
}
다음을 사용하여 "지정된 바이트 배열의 값을 계산"할 수 있습니다 ComputeHash
.
var hash = sha1.ComputeHash(temp);
If you want to analyse the result in string representation, then you will need to format the bytes using the {0:X2}
format specifier.
Fastest way is this :
public static string GetHash(string input)
{
return string.Join("", (new SHA1Managed().ComputeHash(Encoding.UTF8.GetBytes(input))).Select(x => x.ToString("X2")).ToArray());
}
For Small character output use x2
in replace of of X2
I'll throw my hat in here:
(as part of a static class, as this snippet is two extensions)
//hex encoding of the hash, in uppercase.
public static string Sha1Hash (this string str)
{
byte[] data = UTF8Encoding.UTF8.GetBytes (str);
data = data.Sha1Hash ();
return BitConverter.ToString (data).Replace ("-", "");
}
// Do the actual hashing
public static byte[] Sha1Hash (this byte[] data)
{
using (SHA1Managed sha1 = new SHA1Managed ()) {
return sha1.ComputeHash (data);
}
참고URL : https://stackoverflow.com/questions/17292366/hashing-with-sha1-algorithm-in-c-sharp
'Program Tip' 카테고리의 다른 글
데이터베이스에 대한 CREATE 스크립트 내보내기 (0) | 2020.11.22 |
---|---|
뷰가 애니메이션 된 후 setVisibility가 작동하지 않는 이유는 무엇입니까? (0) | 2020.11.22 |
Android Studio-XML 편집기 자동 완성이 지원 라이브러리에서 작동하지 않음 (0) | 2020.11.22 |
MongoDB는 한 번에 여러 컬렉션 쿼리 (0) | 2020.11.21 |
zeromq : 무한 대기를 방지하는 방법? (0) | 2020.11.21 |