evp
名稱
evp - 高階密碼學函式
語法
#include <openssl/evp.h>
說明
EVP 函式庫提供一個高階介面,用於密碼學函式。
EVP_SealXXX 和 EVP_OpenXXX 函式提供公開金鑰加密和解密,用於實作數位「信封」。
EVP_DigestSignXXX 和 EVP_DigestVerifyXXX 函式實作數位簽章和訊息驗證碼 (MAC)。另請參閱較舊的 EVP_SignXXX 和 EVP_VerifyXXX 函式。
對稱加密可用於 EVP_EncryptXXX 函式。 EVP_DigestXXX 函式提供訊息摘要。
EVP_PKEYXXX 函式提供一個高階介面,用於非對稱演算法。若要建立新的 EVP_PKEY,請參閱 EVP_PKEY_new(3)。EVP_PKEY 可透過使用 EVP_PKEY_fromdata(3) 頁面中所述的函式,與特定演算法的私密金鑰關聯,或使用 EVP_PKEY_keygen(3) 產生新的金鑰。EVP_PKEY 可使用 EVP_PKEY_eq(3) 進行比較,或使用 EVP_PKEY_print_private(3) 進行列印。 EVP_PKEY_todata(3) 可用於將金鑰轉換回 OSSL_PARAM(3) 陣列。
EVP_PKEY 函式支援完整的非對稱演算法操作
- 有關金鑰協商,請參閱 EVP_PKEY_derive(3)
- 有關簽署和驗證,請參閱 EVP_PKEY_sign(3)、EVP_PKEY_verify(3) 和 EVP_PKEY_verify_recover(3)。不過,請注意這些函式不會對要簽署的資料執行摘要。因此,您通常會使用 EVP_DigestSignInit(3) 函式來執行此目的。
- 有關加密和解密,請分別參閱 EVP_PKEY_encrypt(3) 和 EVP_PKEY_decrypt(3)。不過,請注意這些函式只執行加密和解密。由於公開金鑰加密是一項昂貴的操作,您通常會使用 EVP_SealInit(3) 和 EVP_OpenInit(3) 函式,將加密訊息包覆在「數位信封」中。
EVP_BytesToKey(3) 函式提供一些有限的密碼基礎加密支援。仔細選擇參數將提供相容於 PKCS#5 PBKDF1 的實作。不過,新的應用程式通常不應使用此函式(例如,優先使用 PCKS#5 中的 PBKDF2)。
EVP_EncodeXXX 和 EVP_DecodeXXX 函式實作 base 64 編碼和解碼。
所有對稱演算法(密碼)、摘要和非對稱演算法(公開金鑰演算法)都可以替換為提供替代實作的 ENGINE 模組。如果已將密碼或摘要的 ENGINE 實作註冊為預設值,則各種 EVP 函式將自動使用這些實作,優先於內建的軟體實作。如需更多資訊,請參閱 engine(3) 手冊頁。
雖然許多演算法都有低階演算法特定函式,但建議不要使用。它們無法與 ENGINE 搭配使用,也無法使用低階函式存取新演算法的 ENGINE 版本。此外,這會讓程式碼更難適應新演算法,而且有些選項在低階層級無法得到乾淨的支援,有些作業使用高階介面會更有效率。
另請參閱
EVP_DigestInit(3)、EVP_EncryptInit(3)、EVP_OpenInit(3)、EVP_SealInit(3)、EVP_DigestSignInit(3)、EVP_SignInit(3)、EVP_VerifyInit(3)、EVP_EncodeInit(3)、EVP_PKEY_new(3)、EVP_PKEY_fromdata(3)、EVP_PKEY_todata(3)、EVP_PKEY_keygen(3)、EVP_PKEY_print_private(3)、EVP_PKEY_decrypt(3)、EVP_PKEY_encrypt(3)、EVP_PKEY_sign(3)、EVP_PKEY_verify(3)、EVP_PKEY_verify_recover(3)、EVP_PKEY_derive(3)、EVP_BytesToKey(3)、ENGINE_by_id(3)
版權
Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
根據 Apache License 2.0(「授權」)授權。您只能在遵守授權條款的情況下使用此檔案。您可以在原始程式碼散佈中的 LICENSE 檔案中取得副本,或至 https://www.openssl.org/source/license.html 取得。