Transcript 开源软件报告
开源软件报告
组员:
00448152 王永刚 00448328 李强
00448329 张纯 00448207 李洪昌
报告提纲
软件简介
版本控制
项目主页
Bug管理机制
自动化编译、测试、安装、卸载机制
合适的license
编码风格
软件简介
名称:基于DES算法的加密解密工具
开发语言:C++
编译环境:GCC
DES算法简介
DES (Data Encryption Standard,数据加
密标准)是一个分组加密算法,它以64 bit位(8
byte)为分组对数据加密,其中有8 bit奇偶校
验,有效密钥长度为56 bit。64 位一组的明
文从算法的一端输入,64 位的密文从另一端
输出。
DES一轮迭代示意图
DES算法一轮迭代
DES算法的加密和解密用的是同一算法,它的安全性依
赖于所用的密钥。DES 对64位的明文分组进行操作,通过
一个初始置换,将明文分组成左半部分和右半部分,各32位
长。然后进行16轮完全相同的运算,这些运算被称为函数f,
在运算过程中数据与密钥结合。经过16轮后,左、右半部分
合在一起经过一个末置换(初始置换的逆置换),完成算法。
在每一轮中,密钥位移位,然后再从密钥的56位中选出48位。
通过一个扩展置换将数据的右半部分扩展成48位,并通过一
个异或操作与48位密钥结合,通过8个s盒将这48位替代成新
的32位数据,再将其置换一次。这些运算构成了函数f。然
后,通过另一个异或运算,函数f输出与左半部分结合,其结
果即成为新的右半部分, 原来的右半部分成为新的左半部分。
将该操作重复16次,实现DES的16轮运算。
版本控制
SVN的使用:
apache2.* + svn1.4.3 + TortoiseSVN-1.4.3
svn服务器:
在windows环境下搭建,简单配置一下apache,与svn配合
使用
TortoiseSVN:
它是svn的可视化客户端,我们是用windows版本
的(bs一下), 这样非常方便地使用svn的各种操作.
版本控制
到目前为止,本软件共经历了如下几个版本:
版本1.0:
明文和密钥都由用户手动输入,且支持输入的明文最大
长度1000(含空格),输入的密钥规定长度必须为8便于
DES的一轮迭代。如果明文长度不是8的倍数,在其尾部添
加适当空格使之长度为8的倍数。
版本2.0:
支持用户输入任意长度的密钥,但仍须用户输入明文。
版本3.0:
将加密与解密分离并由用户选择,即使输入出错也能无
限次运行。
版本4.0:
在版本3.0的基础上支持对某一文本文件进行加密和解密,
密钥由用户输入且为任意长度。
项目主页
平台搭建Apache
2.2
PHP
5.2
数据库MySQL 5.1
便于在网站上留言及保存留言
Http://162.105.235.40
Bug管理机制
尝试使用BugFree
反馈方式
在网页上留言
发邮件给我们
自动化编译、测试、安装、卸载机制
使用autoconf,automake自动生成makefile
对程序进行自动化编译、测试、安装、卸载
其中
Makefile.am
AUTOMAKE_OPTIONS=gnu
发布符合gnu规范的软件
Automake自动化流程
目录结构
开源许可证
我们采用的开源许可证是GPL
原因:
开源许可证的不同点
GPL的优越性
开源软件许可证的不同点
是否允许同其他非开源软件代码混合
是否必须公开修改后的程序
是否明确了专利许可授权
是否明确了专利侵权诉讼导致许可证协议终止
是否明确允许与函数库连接
是否只能按本许可证发布源代码
是否要求对于获得的源代码可能存在知识产权问
题进行明确提示
开源软件许可证的比较
GPL: General Public License
自由软件联盟GNU的开源软件许可证的一种
开源软件领域最富盛名
对被许可人权利限制最严
最大限度保证软件自由
GPL的理念: 在承认版权的前提下, 通过软
件的版权许可来实现自由软件的自由权利的
要求
编码风格1
空行
在每个类声明之后、每个函数定义结束之
后都要加空行。
在一个函数体内,逻辑上密切相关的语句
之间不加空行,其它地方应加空行分隔。
编码风格2
变量定义
指针、引用类型的变量一行定义一个。
初始化的数组变量一行定义一个。
要单独注释的变量一行定义一个。
其他变量最好也一行定义一个。
编码风格3
一行代码只写一条语句。
if, for, while, do 等语句自占一行。不论执
行语句有多少都要加花括号。花括号应独占
一行并且位于同一列,同时与引用它们的语
句左对齐。
-- 理由:这样可以防止书写失误。
编码风格4(1)
空格(1)
在定义指针和引用时,* 和 & 前后各留一个空格(但
多级指针多个 * 之间不留空格)。在解引用和取地址
时,* 和 & 与后面的标识符间不留空格。
-- 理由:突出指针和引用类型的定义,防止犯错。
二元操作符的前后应当加空格。
一元操作符如前后不加空格。
"[]", ".", "->" 前后不加空格。
编码风格4(2)
空格(2)
if, for, while, do 等关键字之后应留一个空格再跟左括号,以
突出关键字。
函数名之后不要留空格,紧跟左括号。
左括号向后紧跟,右括号、逗号、分号向前紧跟,紧跟处不
留空格。
逗号之后要留空格。如果分号不是一行的结束符号(例如 for
语句中的情况),其后要留空格。
【未确定的一些做法】对于表达式比较长的 for 语句和 if 语
句,紧凑起见可以按优先级先后顺序去掉一些空格,如 for
(i=0; i<10; i++) 和 if ((a<=b) && (c<=d))。
编码风格5
★ 缩进
只用空格,不用制表符。
程序一级缩进四个空格。
续行缩进八个空格。
switch 语句和 case 语句对齐(处于同一级缩进上)。
编码风格……
更多内容请登陆
Http://162.105.235.40
遇到的困难
开源软件的选择
MFC无法自动编译
重在理解开源流程
版本控制软件的安装及使用
CVS vs SVN
附加工具:Apache……
收获
开源软件的哲学思想
开源软件的包装过程
开源软件的与时俱进
开源软件的持久反馈
人员分工
王永刚
李强
张纯
李洪昌
程序更新、撰写文本
项目主页、网站建设及维护
自动化编译、开源软件许可证
版本控制
THANKS!!