반응형
C #에서 SHA1 파일 체크섬을 어떻게 수행합니까?
SHA1CryptoServiceProvider()
파일에서를 사용하여 파일의 SHA1 체크섬을 생성 하려면 어떻게해야 합니까?
using (FileStream fs = new FileStream(@"C:\file\location", FileMode.Open))
using (BufferedStream bs = new BufferedStream(fs))
{
using (SHA1Managed sha1 = new SHA1Managed())
{
byte[] hash = sha1.ComputeHash(bs);
StringBuilder formatted = new StringBuilder(2 * hash.Length);
foreach (byte b in hash)
{
formatted.AppendFormat("{0:X2}", b);
}
}
}
formatted
SHA-1 해시의 문자열 표현을 포함합니다. 또한 FileStream
바이트 버퍼 ComputeHash
대신를 사용하여 해시를 청크 단위로 계산하므로 한 번에 전체 파일을로드 할 필요가 없으므로 대용량 파일에 유용합니다.
ComputeHash 메서드를 사용합니다. 여길 봐:
스 니펫 예 :
using(var cryptoProvider = new SHA1CryptoServiceProvider())
{
string hash = BitConverter
.ToString(cryptoProvider.ComputeHash(buffer));
//do something with hash
}
여기서 buffer는 파일의 내용입니다.
이미 파일을 스트림으로 읽고있는 경우 다음 기술은 읽을 때 해시를 계산합니다. 유일한주의 사항은 전체 스트림을 소비해야한다는 것입니다.
class Program
{
static void Main(string[] args)
{
String sourceFileName = "C:\\test.txt";
Byte[] shaHash;
//Use Sha1Managed if you really want sha1
using (var shaForStream = new SHA256Managed())
using (Stream sourceFileStream = File.Open(sourceFileName, FileMode.Open))
using (Stream sourceStream = new CryptoStream(sourceFileStream, shaForStream, CryptoStreamMode.Read))
{
//Do something with the sourceStream
//NOTE You need to read all the bytes, otherwise you'll get an exception ({"Hash must be finalized before the hash value is retrieved."})
while(sourceStream.ReadByte() != -1);
shaHash = shaForStream.Hash;
}
Console.WriteLine(Convert.ToBase64String(shaHash));
}
}
또한 시도해 볼 수 있습니다.
FileStream fop = File.OpenRead(@"C:\test.bin");
string chksum = BitConverter.ToString(System.Security.Cryptography.SHA1.Create().ComputeHash(fop));
참고 URL : https://stackoverflow.com/questions/1993903/how-do-i-do-a-sha1-file-checksum-in-c
반응형
'program tip' 카테고리의 다른 글
런타임으로 결정된 유형으로 개체 인스턴스화 (0) | 2020.12.07 |
---|---|
Random.Next는 항상 동일한 값을 반환합니다. (0) | 2020.12.07 |
git : 시간대 및 타임 스탬프 형식 (0) | 2020.12.07 |
쿠키와 세션은 무엇이며 서로 어떤 관련이 있습니까? (0) | 2020.12.07 |
python-홀수 / 짝수 확인 및 숫자 크기에 대한 출력 변경 (0) | 2020.12.07 |