Ubuntu下密码学开发环境搭建

来源:互联网 发布:linux samba服务器配置 编辑:程序博客网 时间:2024/06/01 07:48

Ubuntu下密码学开发环境搭建

题记

由于最近在做一些关于密码学的项目,而密码学大部分开源库都依赖于Linux环境,所以在Ubuntu下搭建密码学开发环境就变得很有必要了。本文介绍了在ubuntu下搭建密码学开发环境的必要步骤,同时进行了一些细微的设置,以提高使用感受。

Ubuntu系统安装并设置root账户。

我安装的是Ubuntu13.10 。由于开发的过程中需要频繁修改各种conf文件,或者修改/usr文件夹中的文件,所以管理员权限下的sudo显然无法满足我们的需求,我们需要建立root账户,以便我们开展以后的工作。

  首先是开启root帐号,设置root密码

sudo passwd root
然后根据提示两次输入新的密码即可,这个时候就可以使用root权限登录了。但是如果我们注销登录,会发现系统根本不允许我们使用root账户登录,必须在进入账户之后再进行权限提升,这显然不能满足我们的需求。这是因为ubuntu默认隐藏root账户的原因。所以要修改配置。

  修改lightdm配置

打开Terminal,修改 /etc/lightdm/lightdm.conf.d/10-ubuntu.conf 文件:

sudo gedit /etc/lightdm/lightdm.conf.d/10-ubuntu.conf
  添加如下内容

greeter-show-manual-login=true  #允许手工输入登陆系统的用户名和密码allow-guest=true #允许guest登录

值得一提的是,在ubuntu有些低版本中,需要修改的 /etc/lightdm/lightdm.conf文件,修改方法同上。

这样,我们就可以选择以root账户登录了。

Ubuntu下Eclipse安装与配置

 我的主要工作是进行Java/Android 开发,底层调用是使用C层的库,也就是使用jni/NDK调用。因此,Eclipse是一个合适的开发工具。

1. Eclipse安装

最新版本的Eclipse 下载地址是https://www.eclipse.org/downloads/   需要注意的是,32位系统和64位系统的Eclipse是有区别的,下载的时候要慎重。

  Ubuntu中,测试系统是32位还是64位有两个方法:

1,Terminal里输入 uname -m 返回i686即为32位系统,返回x86_64即为64位系统;

2,Terminal里输入 getconf LONG_BIT,这个命令是返回系统中long型数据的长度,若返回32即为32位系统,64即为64位系统。

下载后解压到/usr/local/java 文件夹中。

2.Eclipse Bug修复

需要说明的是,Ubuntu12.10之后的unity界面有bug,而eclipse的界面使用unity的界面代理,导致有很大几率无法显示eclipse菜单,所以必须新建快捷方式,以此开启禁用菜单代理选项模式的Eclipse(如果安装完毕后打开Eclipse,发现自己的菜单栏可以使用,可以跳过这一步)。解决方法如下:
  1.新建快捷方式。
    在任意文件夹(建议在桌面)新建->空白文档,输入以下代码

[Desktop Entry]Categories=Development;Comment[zh_CN]=Comment=Exec=env UBUNTU_MENUPROXY= /usr/local/java/eclipse/eclipseGenericName[zh_CN]=IDEGenericName=IDEIcon=/usr/local/java/eclipse/icon.xpmMimeType=Name[zh_CN]=eclipseName=eclipsePath=StartupNotify=trueTerminal=falseType=ApplicationX-DBUS-ServiceName=X-DBUS-StartupType=X-KDE-SubstituteUID=falseX-KDE-Username=owenExec=env UBUNTU_MENUPROXY=0  /usr/local/java/eclipse/eclipse
重点语句为
Exec=env UBUNTU_MENUPROXY=0  /usr/local/java/eclipse/eclipse
其作用是禁用菜单代理。
之后保存并推出,将文件重命名为eclipse.desktop,右键该文件增加权限,并检查命令是否正确,如图所示:

之后双击桌面图标就可以打开了,菜单也可以实现下拉。如果有需求,也可以将其固定在启动栏上。

  Eclipse本身有自带JDK的版本,但是我还是希望安装独立的jdk,这样在有些需要在命令行下编译的时候,可以方便地调用javac和javah命令,所以下载纯净的的Eclipse,并配合oracle-jdk,JDK 8的下载地址为http://www.oracle.com/technetwork/java/javase/downloads/index.html 。如果使用openJDK,直接apt-get install安装即可。
  下载完毕后解压,将解压好的jdk1.8.0_5文件夹移动到/usr/lib/jvm目录里,此时即使没有jvm目录也可以执行如下命令,jvm文件夹将得到创建。   
mv jdk1.8.0_5 /usr/lib/jvm
下面修改环境变量,以便在任何目录下均可调用Java命令。修改/etc/profile
gedit /etc/profile
在末尾添加:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_5export JRE_HOME=/usr/lib/jvm/jdk1.8.0_5/jreexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$PATH
需要注意的有两点,一是CLASSPATH第一个冒号前面的小点,指的是“当前目录”,必须要加上;二是将jdk1.8.0_5替换为自己的Java版本号。
保存后执行:
source /etc/profile
这样就完成了java环境变量的配置。测试环境变量配置正确的方法如下:

java -version 
显示如下内容,代表Java配置正确:

java version "1.8.0_05"Java(TM) SE Runtime Environment (build 1.8.0_05-b13)Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)

Eclipse中C/C++开发需要CDT插件,CDT插件安装方法如下: 

    启动Eclipse,选择Help > Install New Software;
    在 Available Software 对话框中,单击 Add…;
    在 Add Site 对话框的 Name 字段中,输入远程站点的名称(例如“C Plugin”)。在 Location 字段中,输入下面的 URL:http://download.eclipse.org/tools/cdt/releases/kepler. 点击确定,pending之后全选下面的选项,一路下一步即可完成安装。

3.Andorid SDK环境搭建

  Eclipse ADT(Android Developer Tools)安装
    启动Eclipse,选择Help > Install New Software。
    在 Available Software 对话框中,单击 Add…,如图所示。

    在 Add Site 对话框的 Name 字段中,输入远程站点的名称(例如“Android Plugin”)。在 Location 字段中,输入下面的 URL:https://dl-ssl.google.com/android/eclipse/注意:如果访 问该插件时遇到问题,可以将 URL 中的 https 改成 http(使用https会更安全一些)。单击 OK。
    回到 Available Software 界面,应该可以看到列表中的 Developer Tools 选项。选择 Developer Tools 旁边的复选框,会同时选中 Android DDMS 和 Android Development Tools。单击 Next。
在最后的 Install Details 对话框中,会列出 Android DDMS 和 Android Development Tools 等特性。单击 Next 阅读并接受许可协议,同时安装所有依赖组件,然后单击 Finish。
    重新启动 Eclipse。
  3.安装android sdk

    重启Eclipse之后,会弹出提示,Android SDK位置并未给出,如图所示:


现在我们需要切出去,下载 Android SDK Tools,地址如下:http://developer.android.com/sdk/index.html

下载 SDK Tools Only即可。下载完毕后解压到任意文件夹。切回Eclipse,将SDK 路径设为刚才Android SDK Tools解压的位置,然后一路下一步安装sdk即可。以后如果需要其他版本的SDK,可打开Android SDK Manager下载。
  为了让SDK在Terminal下也能使用,配置下sdk的环境变量,修改/etc/profile
sudo gedit /etc/profile
在末尾添加:
# Android SDKexport ANDROID_SDK=~/developTools/android-sdk-linuxexport PATH=$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools:$PATH

添加完成不要忘了在Terminal中输入

source /etc/profile

进行测试:emulator -version 结果如图所示

  4.安装Android NDK
NDK在某些需要调用C库文件的场景中需要。NDK下载地址为:
http://developer.android.com/tools/sdk/ndk/index.html
下载完毕后解压到任意文件夹中,并如sdk一样配置环境变量
sudo gedit /etc/profile
在末尾添加:
export NDK_HOME=/home/snowdream/android-ndk-r5export PATH=$NDK_HOME:$PATH
记住将路径替换为自己NDK所解压的路径。

添加完成不要忘了 

source /etc/profile

进行测试:Terminal下输入

ndk-build -version

结果会显示ndk-build的正确版本号。

环境安装完毕。

密码学库文件安装

首先安装pbc系列库。

1. pbc依赖的库安装
pbc 库依赖于
M4
GMP Library
flex
bison
其中 M4、flex、bison均可以通过apt-get install安装
  apt-get install M4  apt-get install flex  apt-get install bison
GMP下载地址如下:
https://gmplib.org/
下载并解压,在terminal里进入解压文件夹安装,方法如下:
./configuremakemake check        make install

2. pbc 安装
pbc(The Pairing-Based Cryptography Library)下载地址如下:
http://crypto.stanford.edu/pbc/download.html
下载并解压,在terminal里进入解压文件夹安装,方法如下:
    ./configure    make    make install

至此,密码学开发环境搭建完成。如果需要开发Java/Android的项目,那么就需要一些JNI/NDK开发的知识了。值得庆幸的是,pbc库已经有了JPBC版本,下载地址与pbc下载地址相同,其本质是pbc库的一个java接口,所以它依然依赖于pbc库。下面给出一种直接生成libjpbc-pbc.so动态链接库的方法,使其不依赖于pbc库,但需要注意的是,如果pbc库本身有变动,那么需要重新生成库文件。另外,笔者也不保证这种生成方法足够稳定。
此方法依赖于cmake 和ccmake,二者为编程常用工具,安装方法如下
    apt-get install cmake    apt-get install cmake-curses-gui

安装完毕后,在teminal下进入jpbc解压目录(以<jpbc>代指),输入
    cd <jpbc>/jpbc-pbc    ccmake .
显示如图所示:

像make的使用方法一样,输入c,再输入g,此时,在<jpbc>/jpbc-pbc文件夹中生成了必要的Makefile文件
然后输入
    make
输入如图所示

这个库文件即为java可以调用的so文件,在调用的时候注意设置java.library.path即可。


  虽然我们的基本开发环境搭建完毕,但是根据每个人的需求不同,我们需要另行下载自己需要的库文件,例如经常用到的openSSL。这些文件限于篇幅,就不进行一一介绍了,如果有这些开源库使用方面的讨论,也请大家不要忘记带上笔者:)

1 0