2014-09-23 17 views
0

例如,我見過一個文件是這樣的:有什麼參數的用法在SHA1()函數的詳細c語言

char data[] = "Hello, world!"; 

size_t length = sizeof(data); 

unsigned char hash[SHA_DIGEST_LENGTH]; 

SHA1(data, length, hash); 

然後,我發現了一個實例幾乎喜歡。但是區別是SHA1(data, length - 1, hash);所以,我有點困惑。我應該使用"sizeof(data)"還是"sizeof(data)-1"?提前致謝。

+0

@bot,感謝您的好意,事情是,我想散列多個字符串,比如「hello,world」,然後將散列字符串連接到更長的字符串,然後將較長的字符串轉換爲一些特定元素類型。當我這樣做時,我使用了一些與「長度」和緩衝區類似參數的函數,如snprintf()等,所以我發現我需要了解任何參數的含義,所以我的問題可能有點白癡......無論如何。謝謝你的幫助。 – 2014-09-23 12:53:54

回答

2

它取決於你想散列的實際有效載荷。

  • sizeof data包括零終止符。
  • sizeof(data) -1strlen(data)排除零。
+0

@bot,感謝您的好意,事情是我想散列多個字符串,比如「hello,world」,然後將散列字符串連接到更長的字符串,然後將較長的字符串轉換爲某種特定的元素類型。當我這樣做時,我使用了一些與「長度」和緩衝區類似參數的函數,如snprintf()等,所以我發現我需要了解任何參數的含義,所以我的問題可能有點白癡......無論如何。謝謝你的幫助。 – 2014-09-23 12:55:53

+0

'SHA1'函數佔用字節長度,它不關心它是否是c字符串。所以這個參數真的意味着需要多少個字節來散列。請注意,示例中的sizeof(data)有14個可見字符。 – 2014-09-23 13:00:24

+0

好的,非常感謝,我明白你的意思。但是,當我在上面得到名爲「hash」的散列字符串時,我得到了一個20字節(160位)的長字符串。實際上,我真正想要的是一個160位0-1字符串(一個只有0和1的字符串),我不知道如何計算0-1字符串。你有好主意嗎? – 2014-09-23 13:26:49

相關問題