PBC庫系列(一)

PBC庫

PBC(Pairing-Based Cryptography Library) 是實現雙線性對運算的函數庫 . 這個開源代碼 C 函數庫是由Stanford 大學開發 , 庫的地址爲 http://crypto.stanford.edu/pbc/

安裝過程在前面的文檔

ubuntu安裝過程:https://blog.csdn.net/TBBetter/article/details/103587977

手冊

	PBC:https://crypto.stanford.edu/pbc/manual/
	GMP:https://gmplib.org/manual/Concept-Index.html#Concept-Index

基礎

1.	使用PBC庫的程序應包含文件pbc.h:
		#include <pbc.h>
		
2.	執行代碼要鏈接到PBC庫和GMP庫,例如:
		$ gcc program.c -L. -lpbc -lgmp

3. 	pbc.h 已經包含 gmp.h
 
4. PBC在幾個方面遵循GMP:
		4.1	輸出參數通常在輸入參數之前。
		4.2 	變量可以被一條命令的輸入、輸出同時使用
		4.3	在使用變量之前,必須將其初始化一次。當不再需要時,必須清除它。爲了提高效率,應避免不必要的初始化和清除。
		4.4	以_t結尾的PBC變量在函數調用中的行爲與GMP變量相同:有效地作爲調用引用。換句話說,就像在GMP中一樣,如果一個函數修改了輸入變量,則當控制返回返回給調用者時,該變量將保持修改狀態。
		4.5	與GMP一樣,變量會在需要時自動分配內存。默認情況下,調用malloc()和friends,但是可以更改。
		4.6	PBC功能大部分是可重入的。

5.	由於PBC庫基於GMP構建,因此可以使用GMP類型。PBC類型類似於GMP類型。以下示例摘自GMP手冊中的示例,並說明了如何聲明PBC數據類型element_t。
		element_t sum;
		struct foo { element_t x, y; };
		element_t vec[20];

6.	GMP具有用於整數的mpz_t類型,用於有理數的mpq_t等。
		相反,PBC將element_t數據類型用於不同代數結構的元素,例如橢圓曲線組,多項式環和有限域。
		函數假定其輸入來自適當的代數結構。

7.	PBC數據類型和功能可以分類如下。(僅前兩個足以滿足一系列應用)
		element_t			:代數結構的元素。
		pairing_t				:配對(包含一系列元素);可以根據param子目錄中與PBC捆綁在一起的配對參數進行初始化。
		pbc_param_t	:用於生成配對參數。
		pbc_cm_t			:通過CM方法構造麴線的參數;有時是pbc_param_t需要的。
		field_t					:代數結構:羣,環和場;由pairing_t內部使用。
		還有一些其他功能,例如控制如何生成隨機位的功能。在給定數據類型上運行的函數通常具有相同的前綴,例如那些涉及element_t對象的對象以element_開頭。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章