最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【Miracl密碼庫】橢圓曲線的雙線性配對實例AKE

2022-10-24 11:46 作者:C語言實驗室  | 我要投稿

本文從公眾號復制過來,排版較亂,可參考原文

【Miracl密碼庫】AKE的實現(xiàn)(ake.cpp)


在Miracl密碼庫的基礎(chǔ)上,復現(xiàn)Miracl庫中的案例AKE,了解雙線性配對的原理。測試案例為Miracl庫中的ake.cpp文件

ake.cpp中實現(xiàn)的AKE,源于Mike Scott的Authenticated ID-based Key Exchange and remote log-in with simple token and PIN numberhttp://eprint.iacr.org/2002/164


復現(xiàn)過程

1.生成靜態(tài)庫miracl.a

【Miracl密碼庫】編譯庫文件

2.添加所需要的庫文件

cp_pair.cpp ?miracl.a ?zzn.h ? ?zzn4.cppake.cpp ? ?ecn.cpp ? ?miracl.h ?zzn2.cpp ?zzn4.hbig.cpp ? ?ecn.h ? ?mirdef.h ?zzn2.h ? ?zzn8.cppbig.h ? ?ecn4.cpp ?pairing_3.h ?zzn24.cpp ?zzn8.hbls_pair.cpp ?ecn4.h ? ?zzn.cpp ? ?zzn24.h

根據(jù)ake.cpp文件的相關(guān)說明

Compile with modules as specified below
? For MR_PAIRING_CP curve ? cl /O2 /GX ake.cpp cp_pair.cpp zzn2.cpp big.cpp zzn.cpp ecn.cpp miracl.lib
? For MR_PAIRING_MNT curve ? cl /O2 /GX ake.cpp mnt_pair.cpp zzn6a.cpp ecn3.cpp zzn3.cpp zzn2.cpp big.cpp zzn.cpp ecn.cpp miracl.lib ? ? For MR_PAIRING_BN curve ? cl /O2 /GX ake.cpp bn_pair.cpp zzn12a.cpp ecn2.cpp zzn4.cpp zzn2.cpp big.cpp zzn.cpp ecn.cpp miracl.lib
? For MR_PAIRING_KSS curve ? cl /O2 /GX ake.cpp kss_pair.cpp zzn18.cpp zzn6.cpp ecn3.cpp zzn3.cpp big.cpp zzn.cpp ecn.cpp miracl.lib
? For MR_PAIRING_BLS curve ? cl /O2 /GX ake.cpp bls_pair.cpp zzn24.cpp zzn8.cpp zzn4.cpp zzn2.cpp ecn4.cpp big.cpp zzn.cpp ecn.cpp miracl.lib

首先測試MR_PAIRING_CP

#define?MR_PAIRING_CP??????//?AES-80?security???#define?AES_SECURITY?80

編輯項目管理Makefile文件為

ake : ake.o miracl.a zzn2.o big.o zzn.o ecn.o cp_pair.o ?g++ -o ake ake.o miracl.a zzn2.o big.o zzn.o ecn.o cp_pair.o
ake.o : ake.cpp ?g++ -c -o ake.o ake.cpp
zzn8.o : zzn8.cpp ?g++ -c -o zzn8.o zzn8.cpp
zzn24.o : zzn24.cpp ?g++ -c -o zzn24.o zzn24.cpp
zzn.o : zzn.cpp ?g++ -c -o zzn.o zzn.cpp
zzn2.o : zzn2.cpp ?g++ -c -o zzn2.o zzn2.cpp
zzn4.o : zzn4.cpp ?g++ -c -o zzn4.o zzn4.cpp
ecn4.o : ecn4.cpp ?g++ -c -o ecn4.o ecn4.cpp
ecn.o : ecn.cpp ?g++ -c -o ecn.o ecn.cpp
big.o : big.cpp ?g++ -c -o big.o big.cpp
cp_pair.o : cp_pair.cpp ?g++ -c -o cp_pair.o cp_pair.cpp
clean : ?rm -f *.o ake

其中MR_PAIRING_CP型明確指定了相關(guān)關(guān)聯(lián)的文件

For MR_PAIRING_CP curve ? cl /O2 /GX ake.cpp cp_pair.cpp zzn2.cpp big.cpp zzn.cpp ecn.cpp miracl.lib

所以在編譯的過程中,只需要編譯如下文件

ake : ake.o miracl.a zzn2.o big.o zzn.o ecn.o cp_pair.o ?g++ -o ake ake.o miracl.a zzn2.o big.o zzn.o ecn.o cp_pair.o

編譯測試

% makeg++ -c -o ake.o ake.cpp g++ -c -o zzn2.o zzn2.cppg++ -c -o big.o big.cppg++ -c -o zzn.o zzn.cppg++ -c -o ecn.o ecn.cppg++ -c -o cp_pair.o cp_pair.cppg++ -o ake ake.o miracl.a zzn2.o big.o zzn.o ecn.o cp_pair.o
% ./ake Mapping Server ID to pointMapping Alice & Bob ID's to pointsAlice, Bob and the Server visit Trusted AuthorityAlice and Server Key ExchangeAlice ?Key= 89EC2E83ADF6354DB21BServer Key= 89EC2E83ADF6354DB21BBob and Server Key ExchangeBob's ?Key= 1F983883493C1FD49929Server Key= 1F983883493C1FD49929

MR_PAIRING_CP型AKE測試完成,得到了相應的公私鑰對。

3.測試MR_PAIRING_MNT型

% lsMakefile ?ecn.h ? ?mirdef.h ?zzn24.cpp ?zzn6a.hake.cpp ? ?ecn3.cpp ?mnt_pair.cpp ?zzn24.h ? ?zzn8.cppbig.cpp ? ?ecn3.h ? ?pairing_3.h ?zzn3.cpp ?zzn8.hbig.h ? ?ecn4.cpp ?zzn.cpp ? ?zzn3.hbls_pair.cpp ?ecn4.h ? ?zzn.h ? ?zzn4.cppcp_pair.cpp ?miracl.a ?zzn2.cpp ?zzn4.hecn.cpp ? ?miracl.h ?zzn2.h ? ?zzn6a.cpp

編譯Makefile文件

% makeg++ -c -o ake.o ake.cpp g++ -c -o mnt_pair.o mnt_pair.cppg++ -c -o zzn6a.o zzn6a.cppg++ -c -o ecn3.o ecn3.cppg++ -c -o zzn3.o zzn3.cppg++ -c -o zzn2.o zzn2.cppg++ -c -o big.o big.cppg++ -c -o zzn.o zzn.cppg++ -c -o ecn.o ecn.cppg++ -o ake mnt_pair.o zzn6a.o ecn3.o zzn3.o zzn2.o big.o zzn.o ecn.o miracl.aUndefined symbols for architecture arm64: ?<span data-raw-text="" "="" data-textnode-index-1666582084849="609" data-index-1666582084849="3383" data-textnode-notemoji-index-1666582084849="3383" style=";padding: 0px">"_main<span data-raw-text="" "="" data-textnode-index-1666582084849="609" data-index-1666582084849="3389" data-textnode-notemoji-index-1666582084849="3389" style=";padding: 0px">", referenced from: ? ? implicit entry/start for main executableld: symbol(s) not found for architecture arm64clang: error: linker command failed with exit code 1 (use -v to see invocation)make: *** [ake] Error 1

修改編譯條件

#define MR_PAIRING_MNT ?// AES-80 security#define?AES_SECURITY?80

通過編譯,發(fā)現(xiàn)不能通過,提示錯誤是

<span data-raw-text="" "="" data-textnode-index-1666582084849="652" data-index-1666582084849="3689" data-textnode-notemoji-index-1666582084849="3689" style=";padding: 0px">"_main<span data-raw-text="" "="" data-textnode-index-1666582084849="652" data-index-1666582084849="3695" data-textnode-notemoji-index-1666582084849="3695" style=";padding: 0px">", referenced from: ? ? implicit entry/start for main executable

也即沒有main函數(shù),程序不能執(zhí)行,檢查Makefile的編寫,發(fā)現(xiàn)掉了ake.o

ake : ake.o mnt_pair.o zzn6a.o ecn3.o zzn3.o zzn2.o big.o zzn.o ecn.o miracl.a ?g++ -o ake ake.o mnt_pair.o zzn6a.o ecn3.o zzn3.o zzn2.o big.o zzn.o ecn.o miracl.a

再次執(zhí)行程序

% makeg++ -c -o ake.o ake.cpp g++ -c -o mnt_pair.o mnt_pair.cppg++ -c -o zzn6a.o zzn6a.cppg++ -c -o ecn3.o ecn3.cppg++ -c -o zzn3.o zzn3.cppg++ -c -o zzn2.o zzn2.cppg++ -c -o big.o big.cppg++ -c -o zzn.o zzn.cppg++ -c -o ecn.o ecn.cppg++ -o ake ake.o mnt_pair.o zzn6a.o ecn3.o zzn3.o zzn2.o big.o zzn.o ecn.o miracl.a
% ./ake Mapping Server ID to pointMapping Alice & Bob ID's to pointsAlice, Bob and the Server visit Trusted AuthorityAlice and Server Key ExchangeAlice ?Key= CC3EE86A798D92251EEServer Key= CC3EE86A798D92251EEBob and Server Key ExchangeBob's ?Key= BC01538EC6A598F0FD98Server Key= BC01538EC6A598F0FD98


4.測試MR_PAIRING_BN型

For MR_PAIRING_BN curve ? cl /O2 /GX ake.cpp bn_pair.cpp zzn12a.cpp ecn2.cpp zzn4.cpp zzn2.cpp big.cpp zzn.cpp ecn.cpp miracl.lib

指定了需要的文件

編譯執(zhí)行Makefile文件

% makeg++ -c -o ake.o ake.cpp ake.cpp:37:9: warning: 'AES_SECURITY' macro redefined [-Wmacro-redefined]#define AES_SECURITY 192 ? ? ? ?^ake.cpp:36:9: note: previous definition is here#define AES_SECURITY 128 ? ? ? ?^1 warning generated.g++ -c -o bn_pair.o bn_pair.cppbn_pair.cpp:1439:8: warning: assigning field to itself [-Wself-assign-field] ? ? ? ?mtbits=mtbits; ? ? ? ? ? ? ?^1 warning generated.g++ -c -o zzn12a.o zzn12a.cppg++ -c -o ecn2.o ecn2.cppg++ -c -o zzn4.o zzn4.cppg++ -c -o zzn2.o zzn2.cppg++ -c -o big.o big.cppg++ -c -o zzn.o zzn.cppg++ -c -o ecn.o ecn.cppg++ -o ake ake.o bn_pair.o zzn12a.o ecn2.o zzn4.o zzn2.o big.o zzn.o ecn.o miracl.a
% ./ake Mapping Server ID to pointMapping Alice & Bob ID's to pointsAlice, Bob and the Server visit Trusted AuthorityAlice and Server Key ExchangeAlice ?Key= CDC63D1756A764F0285A1E2AC123329132204D5C9269C571Server Key= CDC63D1756A764F0285A1E2AC123329132204D5C9269C571Bob and Server Key ExchangeBob's ?Key= 17D419F8F95565F7969D496224AEE9BB34682E6705BCCC3CServer Key= 17D419F8F95565F7969D496224AEE9BB34682E6705BCCC3C

雖然有兩個警告信息,但是不影響結(jié)果。

5.測試MR_PAIRING_BLS型

% makeg++ -c -o ake.o ake.cpp g++ -c -o bls_pair.o bls_pair.cppg++ -c -o zzn24.o zzn24.cppg++ -c -o zzn8.o zzn8.cppg++ -c -o zzn4.o zzn4.cppg++ -c -o zzn2.o zzn2.cppg++ -c -o ecn4.o ecn4.cppg++ -c -o big.o big.cppg++ -c -o zzn.o zzn.cppg++ -c -o ecn.o ecn.cppg++ -o ake ake.o bls_pair.o zzn24.o zzn8.o zzn4.o zzn2.o ecn4.o big.o zzn.o ecn.o miracl.a
% ./ake Mapping Server ID to pointMapping Alice & Bob ID's to pointsAlice, Bob and the Server visit Trusted AuthorityAlice and Server Key ExchangeAlice ?Key= AF9A730D9A22887CF75CF54156099212C75809611CF66847006CE5EA27E764D6Server Key= AF9A730D9A22887CF75CF54156099212C75809611CF66847006CE5EA27E764D6Bob and Server Key ExchangeBob's ?Key= 9214406ADF3C8A31A7A8AC034E5F1E7384E6BC41E881340283BC6421FF80219FServer Key= 9214406ADF3C8A31A7A8AC034E5F1E7384E6BC41E881340283BC6421FF80219F


全部代碼

Makefile ?ecn2.cpp ?mirdef.h ?zzn2.cpp ?zzn6.hake.cpp ? ?ecn2.h ? ?mnt_pair.cpp ?zzn2.h ? ?zzn6a.cppbig.cpp ? ?ecn3.cpp ?pairing_3.h ?zzn24.cpp ?zzn6a.hbig.h ? ?ecn3.h ? ?zzn.cpp ? ?zzn24.h ? ?zzn8.cppbls_pair.cpp ?ecn4.cpp ?zzn.h ? ?zzn3.cpp ?zzn8.hbn_pair.cpp ?ecn4.h ? ?zzn12a.cpp ?zzn3.hcp_pair.cpp ?kss_pair.cpp ?zzn12a.h ?zzn4.cppecn.cpp ? ?miracl.a ?zzn18.cpp ?zzn4.hecn.h ? ?miracl.h ?zzn18.h ? ?zzn6.cpp

Makefile

# AKE加密算法測試 ?# 測試 ake.cpp 文件
# MR_PAIRING_CP# ake : ake.o miracl.a zzn2.o big.o zzn.o ecn.o cp_pair.o ?# g++ -o ake ake.o miracl.a zzn2.o big.o zzn.o ecn.o cp_pair.o
# MR_PAIRING_MNT# ake : ake.o mnt_pair.o zzn6a.o ecn3.o zzn3.o zzn2.o big.o zzn.o ecn.o miracl.a ?# g++ -o ake ake.o mnt_pair.o zzn6a.o ecn3.o zzn3.o zzn2.o big.o zzn.o ecn.o miracl.a
# MR_PAIRING_BN# ake : ake.o bn_pair.o zzn12a.o ecn2.o zzn4.o zzn2.o big.o zzn.o ecn.o miracl.a??#?g++?-o?ake?ake.o?bn_pair.o?zzn12a.o?ecn2.o?zzn4.o?zzn2.o?big.o?zzn.o?ecn.o?miracl.a
# MR_PAIRING_BLSake : ake.o bls_pair.o zzn24.o zzn8.o zzn4.o zzn2.o ecn4.o big.o zzn.o ecn.o miracl.a ?g++ -o ake ake.o bls_pair.o zzn24.o zzn8.o zzn4.o zzn2.o ecn4.o big.o zzn.o ecn.o miracl.a
ake.o : ake.cpp ?g++ -c -o ake.o ake.cpp
zzn8.o : zzn8.cpp ?g++ -c -o zzn8.o zzn8.cpp
zzn24.o : zzn24.cpp ?g++ -c -o zzn24.o zzn24.cpp
zzn.o : zzn.cpp ?g++ -c -o zzn.o zzn.cpp
zzn2.o : zzn2.cpp ?g++ -c -o zzn2.o zzn2.cpp
zzn4.o : zzn4.cpp ?g++ -c -o zzn4.o zzn4.cpp
ecn4.o : ecn4.cpp ?g++ -c -o ecn4.o ecn4.cpp
ecn.o : ecn.cpp ?g++ -c -o ecn.o ecn.cpp
big.o : big.cpp ?g++ -c -o big.o big.cpp
bls_pair.o : bls_pair.cpp ?g++ -c -o bls_pair.o bls_pair.cpp
cp_pair.o : cp_pair.cpp ?g++ -c -o cp_pair.o cp_pair.cpp
mnt_pair.o : mnt_pair.cpp ?g++ -c -o mnt_pair.o mnt_pair.cpp
zzn6a.o : zzn6a.cpp ?g++ -c -o zzn6a.o zzn6a.cpp
ecn3.o : ecn3.cpp ?g++ -c -o ecn3.o ecn3.cpp
zzn3.o : zzn3.cpp ?g++ -c -o zzn3.o zzn3.cpp
bn_pair.o : bn_pair.cpp ?g++ -c -o bn_pair.o bn_pair.cpp
zzn12a.o : zzn12a.cpp ?g++ -c -o zzn12a.o zzn12a.cpp
ecn2.o : ecn2.cpp ?g++ -c -o ecn2.o ecn2.cpp
kss_pair.o : kss_pair.cpp ?g++ -c -o kss_pair.o kss_pair.cpp
zzn18.o : zzn18.cpp ?g++ -c -o zzn18.o zzn18.cpp
zzn6.o : zzn6.cpp ?g++ -c -o zzn6.o zzn6.cpp
clean : ?rm -f *.o ake


測試中存在的問題,歡迎留言討論。


本文從公眾號復制過來,排版較亂,可參考原文

【Miracl密碼庫】AKE的實現(xiàn)(ake.cpp)


【Miracl密碼庫】橢圓曲線的雙線性配對實例AKE的評論 (共 條)

分享到微博請遵守國家法律
宜君县| 和顺县| 开封县| 从化市| 清远市| 鹤峰县| 峨眉山市| 庄河市| 泸西县| 辽源市| 民勤县| 明星| 葫芦岛市| 赣州市| 漯河市| 凤台县| 湘潭县| 巴中市| 沾化县| 读书| 太康县| 桦川县| 任丘市| 灵川县| 巩义市| 明光市| 沙洋县| 保亭| 淮北市| 萝北县| 儋州市| 邵东县| 苍溪县| 磴口县| 黄平县| 遂溪县| 内江市| 遵化市| 肇庆市| 卢龙县| 峨山|