開啟SSL

密碼學與 SSL/TLS 工具包

evp

名稱

evp - 高階密碼學函式

語法

#include <openssl/evp.h>

說明

EVP 函式庫提供一個高階介面,用於密碼學函式。

EVP_SealXXXEVP_OpenXXX 函式提供公開金鑰加密和解密,用於實作數位「信封」。

EVP_DigestSignXXXEVP_DigestVerifyXXX 函式實作數位簽章和訊息驗證碼 (MAC)。另請參閱較舊的 EVP_SignXXXEVP_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_EncodeXXXEVP_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 取得。