在ns3中安裝crypto++

希望在ns3仿真中使用一些密碼學(xué)算法。以下為整理的安裝過(guò)程,來(lái)源見(jiàn)參考文獻(xiàn)。在ubuntu18.04可行。

安裝crypto++

ubuntu使用的包管理系統(tǒng)apt中的crypto++版本比較舊了翎碑。不介意用舊版,或者是使用的是基于debian的發(fā)行版(yum)的話可以使用:

sudo apt-get install libcrypto++-dev libcrypto++-doc libcrypto++-utils

或者相應(yīng)的

yum install cryptopp cryptopp-devel

最新版可以下載源碼編譯安裝:

首先下載cryptopp的源碼:https://www.cryptopp.com/#download之斯,并解壓到一個(gè)工作文件夾中日杈。

比如:

mkdir cryptopp
cd cryptopp/
wget https://www.cryptopp.com/cryptopp820.zip
unzip -a cryptopp820.zip

其中cryptopp820.zip可以相應(yīng)換成你希望的版本。

然后是build。如果想定制makefile flag可以參考crypto++的官方文檔莉擒。執(zhí)行:

make static dynamic cryptest.exe

build完可以執(zhí)行

./cryptest.exe v
./cryptest.exe tv all

來(lái)測(cè)試build得到的庫(kù)酿炸。

最后是安裝庫(kù):

sudo make install PREFIX=/usr/local
sudo mkdir -p /usr/local/include/cryptopp
sudo cp *.h /usr/local/include/cryptopp
sudo chmod 755 /usr/local/include/cryptopp
sudo chmod 644 /usr/local/include/cryptopp/*.h
sudo mkdir -p /usr/local/lib
sudo cp libcryptopp.a /usr/local/lib
sudo chmod 644 /usr/local/lib/libcryptopp.a
sudo mkdir -p /usr/local/bin
sudo cp cryptest.exe /usr/local/bin
sudo chmod 755 /usr/local/bin/cryptest.exe
sudo mkdir -p /usr/local/share/cryptopp
sudo cp -r TestData /usr/local/share/cryptopp
sudo cp -r TestVectors /usr/local/share/cryptopp
sudo chmod 755 /usr/local/share/cryptopp
sudo chmod 755 /usr/local/share/cryptopp/TestData
sudo chmod 755 /usr/local/share/cryptopp/TestVectors
sudo chmod 644 /usr/local/share/cryptopp/TestData/*.dat
sudo chmod 644 /usr/local/share/cryptopp/TestVectors/*.txt

并配置shared library鏈接:

sudo ldconfig

修改wscript

打開(kāi)ns3根目錄(waf所在目錄)下的wscript文件。

搜索

env = conf.env

并在下面添加:

conf.env['lpp'] 
crypto= conf.check(mandatory=True, lib='cryptopp', uselib_store='cryptopp')
conf.env.append_value('CXXDEFINES', 'ENABLE_CRYPTOPP')
conf.env.append_value('CCDEFINES', 'ENABLE_CRYPTOPP')

搜索

if program.env[‘ENABLE_STATIC_NS3’]:

找到代碼

    if program.env['ENABLE_STATIC_NS3']:
        if sys.platform == 'darwin':
            program.env.STLIB_MARKER = '-Wl,-all_load'
        else:
            program.env.STLIB_MARKER = '-Wl,-Bstatic,--whole-archive'
            program.env.SHLIB_MARKER = '-Wl,-Bdynamic,--no-whole-archive'
    else:
        if program.env.DEST_BINFMT == 'elf':
            # All ELF platforms are impacted but only the gcc compiler has a flag to fix it.
            if 'gcc' in (program.env.CXX_NAME, program.env.CC_NAME): 
                program.env.append_value ('SHLIB_MARKER', '-Wl,--no-as-needed')

return program

并修改為:

    if program.env['ENABLE_STATIC_NS3']:
        if sys.platform == 'darwin':
            program.env.STLIB_MARKER = '-Wl,-all_load,-lcryptopp'
        else:
            program.env.STLIB_MARKER = '-Wl,-Bstatic,--whole-archive,-lcryptopp'
            program.env.SHLIB_MARKER = '-Wl,-Bdynamic,--no-whole-archive,-lcryptopp'
    else:
        if program.env.DEST_BINFMT == 'elf':
            # All ELF platforms are impacted but only the gcc compiler has a flag to fix it.
            if 'gcc' in (program.env.CXX_NAME, program.env.CC_NAME): 
                program.env.append_value ('SHLIB_MARKER', '-Wl,--no-as-needed,-lcryptopp')

    return program

搜索

obj.install_path = None

應(yīng)有兩個(gè)結(jié)果涨冀,在每一個(gè)后面都加上

obj.uselib = ‘CRYPTOPP'

修改完之后這段代碼應(yīng)形如:

            if os.path.isdir(os.path.join("scratch", filename)):
                obj = bld.create_ns3_program(filename, all_modules)
                obj.path = obj.path.find_dir('scratch').find_dir(filename)
                obj.source = obj.path.ant_glob('*.cc')
                obj.target = filename
                obj.name = obj.target
                obj.install_path = None
                obj.uselib = 'CRYPTOPP' 
            elif filename.endswith(".cc"):
                name = filename[:-len(".cc")]
                obj = bld.create_ns3_program(name, all_modules)
                obj.path = obj.path.find_dir('scratch')
                obj.source = filename
                obj.target = name
                obj.name = obj.target
                obj.install_path = None
                obj.uselib = 'CRYPTOPP' 

重新配置編譯ns3

sudo ./waf distclean
sudo ./waf configure (你通常使用的配置參數(shù))
sudo ./waf

此時(shí)你已成功的在ns3中安裝了crypto++填硕。比如如果需要SM3庫(kù),可以在你的ns3腳本中

#include <crypto++/sm3.h>; //如果你通過(guò)apt-get安裝crypto++鹿鳖,使用這個(gè)
#include <cryptopp/sm3.h>; //如果你按本文方法從源碼安裝crypto++扁眯,使用這個(gè)

來(lái)使用。

參考文獻(xiàn)

https://www.mehic.info/2016/04/installing-and-crypto-libcryptopp-with-ns3/

https://www.cryptopp.com/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末翅帜,一起剝皮案震驚了整個(gè)濱河市姻檀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涝滴,老刑警劉巖绣版,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異歼疮,居然都是意外死亡杂抽,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)韩脏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)默怨,“玉大人,你說(shuō)我怎么就攤上這事骤素。” “怎么了愚屁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵济竹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我霎槐,道長(zhǎng)送浊,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任丘跌,我火速辦了婚禮袭景,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闭树。我一直安慰自己耸棒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布报辱。 她就那樣靜靜地躺著与殃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上幅疼,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天米奸,我揣著相機(jī)與錄音,去河邊找鬼爽篷。 笑死悴晰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的逐工。 我是一名探鬼主播铡溪,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钻弄!你這毒婦竟也來(lái)了佃却?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤窘俺,失蹤者是張志新(化名)和其女友劉穎饲帅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瘤泪,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灶泵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了对途。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赦邻。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖实檀,靈堂內(nèi)的尸體忽然破棺而出惶洲,到底是詐尸還是另有隱情,我是刑警寧澤膳犹,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布恬吕,位于F島的核電站,受9級(jí)特大地震影響须床,放射性物質(zhì)發(fā)生泄漏铐料。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一豺旬、第九天 我趴在偏房一處隱蔽的房頂上張望钠惩。 院中可真熱鬧,春花似錦族阅、人聲如沸篓跛。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)举塔。三九已至绑警,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間央渣,已是汗流浹背计盒。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芽丹,地道東北人北启。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拔第,于是被迫代替她去往敵國(guó)和親咕村。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348