Obliv c學習之旅

2021-09-24 04:22:46 字數 2856 閱讀 4398

obliv-c學習之旅

step 1:一開始什麼都不知道,按部就班摸索安裝。

模擬編譯原理實驗,大概知道了這個編譯器是個怎麼回事。解決了一開始因vs對編譯器留下的刻板印象。(原來還有這麼簡陋的命令列程式設計)

step2:進入test看**。發現看不懂。於是找了個檔案看。(建議用谷歌)

api介紹:

第一方呼叫該函式監聽提供的埠號。監聽的應該是自己的埠號。【猜想】等待對方主動來連線自己大概,好像和三次握手不一樣。

第二方呼叫該函式,用於連線第一方。引數

server

是第一方的

ip。其中兩個函式的

port

必須一樣,否則會

connect

失敗。【驗證成功】

例項中,

party多為1

、2這樣的數字,

protocoldesc

是乙個物件。**中建立協議就是通過初始化這個物件,可能和底部

api實現有關。

的加密電路協議。

step3:結合檔案理解**,並編寫**。

#pragma once

#define maxn 20

typedef struct protocolio

protocolio;

int get_common(void* args);//功能函式

const char* myside();//返回邊名稱,即是哪一方

————test1.c————

#include

#include

#include"../common/util.h"  

//引用了該檔案中的tcp連線函式octestutiltcpordie(&pd,remote_host,ar**[1]);

#include"test1.h"

const char* myside(int currentparty)

int main(int argc,char *ar**)

// skip input sanitization

const char* remote_host = (strcmp(ar**[2],"--")?ar**[2]:null);

io.size=strlen(ar**[3]);//輸入資料

if(io.size>maxn)

io.s=ar**[3];

//sscanf(ar**[3],"%s",&io.s);

for(int i=io.size;iio.s[i]=remote_host?'#':'$';

//protocolusestdio(&pd);

octestutiltcpordie(&pd,remote_host,ar**[1]);//tcp連線

int currentparty = (remote_host?2:1);

setcurrentparty(&pd,currentparty);

execyaoprotocol(&pd,get_common,&io);//加密電路協議的執行

cleanupprotocol(&pd);

fprintf(stderr,"\n%s ",myside(currentparty));

fprintf(stderr," common: %s\n",io.l);

return 0;

}#include

#include

#include"test1.h"

void readstring(obliv unsigned char* dest, obliv int n,int party,char c);

int get_common(void* args)

}   //該無條件執行塊是為了修改n,因為n為外部定義的資料,在obliv塊中被frozon,不能修改。}}

最後建立兩個虛擬機器,分別執行,第二方輸入第一方的ip位址。執行成功!

第一台虛擬機器輸入:

./a.out port –

字串 &

第二個虛擬機器輸入:

./a.out port ip

位址 字串

Java學習之旅

整型,字元型,浮點型的資料在混合運算中相互轉換,轉換時應遵循以下原則 1 容量小的型別自動轉換成容量大的資料型別 資料型別按照容量大小排序。2 byte,short,char int long float double。3 byte,short,char之間不會相互轉換,他們三者在計算時首先會轉換為...

PMP學習之旅

昨天結束了pmp考試,乙個階段的 專案 完成了,雖然還不知道自己能不能通過,但我覺得有必要乘著熱度把這3個月左右時間的學習總結一下。起初開始準備學pmp的時候,我對這個學習並不是太 感冒 的,我想寧可把時間和成本花在技術深造上。做技術的人總是很固執的,固執的認為 技術為王 固執的認為技術才是推動社會...

ABP學習之旅

1 我使用abp的啟動模板 來建立乙個web應用程式。2 載入專案解決方案 在abp根據模板建立解決方案後,編譯報錯,提示某個包的版本不對。解決方案 3 在.core中建立entity if settings.usedataannotations else 4 方法entityframworkcor...