1
我正在linux/ubuntu上工作。我發現mcrypt在這個平臺中被自動包含爲一個庫。我想用aes 256和cbc padding 7(iv)創建加密。有人能給我一個例子,說明如何用aes 256和cbc iv,padding 7加密字符串?mcrypt linux如何使用rijndael 256 cbc
Rijndael和aes一樣。 http://linux.die.net/man/3/mcrypt
我正在linux/ubuntu上工作。我發現mcrypt在這個平臺中被自動包含爲一個庫。我想用aes 256和cbc padding 7(iv)創建加密。有人能給我一個例子,說明如何用aes 256和cbc iv,padding 7加密字符串?mcrypt linux如何使用rijndael 256 cbc
Rijndael和aes一樣。 http://linux.die.net/man/3/mcrypt
你問如何使用mcrypt
:
這是鏈接我和我想利用圖書館發現了什麼?這是一個基本框架:
#include <mcrypt.h>
int main()
{
char algo[] = "rijndael-256";
char mode[] = "cbc";
char key[] = ...
char iv[] = ...
MCRYPT td = mcrypt_module_open(algo, NULL, mode, NULL);
if (td == MCRYPT_FAILED) { /* error */ }
int r = mcrypt_generic_init(td, key, keysize, iv);
/* use mdecrypt_generic() or mcrypt_generic() */
mcrypt_generic_deinit(td);
mcrypt_module_close(td);
}
您有mcrypt_enc_get_key_size(td)
和mcrypt_enc_get_iv_size(td)
檢查實際密鑰大小和IV的大小和提供合適的密鑰和IV數據。
編輯:因爲它是如此簡單,這裏的一個算法來添加和條PCKS7填充:
std::string add_pkcs7_padding(std::string s, std::size_t n)
{
const std::size_t fill = n - (s.length() % n);
s.append(fill, static_cast<char>(fill));
return s;
}
std::string strip_pkcs7_padding(std::string s, std::size_t n)
{
const std::size_t pad = static_cast<unsigned char>(*s.rbegin());
return s.substr(0, s.length() - pad);
}
(圖書館級代碼當然會測試n
可由char
來表示,並在剝離輸入字符串期間非空且填充有效。)
thx爲例。我的IV是[0,0,0,0,0,0,0]。關鍵是一個32鍵的字符串,例如:KEY =「AESD-CBED-POKF-OHFB-SNCJ-POLD-OK」。你告訴我如何把這個?另外我需要一個PKCS7填充。加密結果是否在td變量中? THX – sunset
加 - 這是一個.C文件嗎?如何使用MCRYPT進行編譯?我會在哪裏找到mcrypt.cpp代碼,如果我想靜態編譯它(沒有依賴關係)。謝謝!!真的很高興:) – sunset
請只閱讀說明書。 mcrypt有一個偉大的手冊,應該回答所有這些。在Linux上,鍵入'man libmcrypt'。 –