2012-02-26 22 views
2

我試圖使用OpenSSL的DSA實現,但我很困惑與以下細節:OpenSSL字節序列是小尾數還是大尾序?

  • 選項的命令openssl dsa ....的「-text」:在輸出的十六進制數字,我是正確的假設這些是字節,並且因此它們處於小尾序?

  • 函數BN_bn2hex和BN_hex2bn,它們使用什麼Endianess?

在此先感謝您的幫助。

回答

8

OpenSSL將所有系列字節(unsigned char數組)視爲大端。

函數BN_bn2hexBN_hex2bn用於轉換爲可打印格式和從可打印格式轉換而來。可打印的格式總是以自然的閱讀順序,這是大端。

對於不可打印的格式轉換如bn2bin,文檔明確指出轉換是大端。但正如我之前所說的,OpenSSL中的約定是所有字節序列的大端。

+0

感謝您的回答! – dsign 2012-02-26 18:22:52

+0

@indiv這是否意味着如果代碼在小型機器上運行,那麼我必須爲應該傳遞給OpenSSL API的任何數據進行字節交換? – user3342339 2017-01-17 19:48:30

+1

@ user3342339:否。只有表示數字的字節序列(通常是'unsigned char []'或'unsigned char *')被解釋爲大端。正如您所期望的那樣,接受原始類型(如int或long)的API函數是主機格式。 – indiv 2017-01-17 19:59:22

相關問題