尘埃落定
每一个可以努力的日子,都是一份厚礼。
每一个可以努力的日子,都是一份厚礼。
2011 1 月 4th
和手写签名一样,数字签名可以为我们验证文档的作者、签名的时间,从而鉴明消息的内容是真实可靠的。它的目的和MAC类似,只是使用的是公钥加密体系。
和RSA加密解密过程相反,在DSA数字签名和认证中,发送者使用自己的私钥对文件或消息进行签名,接受者收到消息后使用发送者的公钥来验证签名的真实性。这个方法完全可以基于RSA来实现,但是在DSA中,我们会更有效率地做这件事情。 更多 >
2011 1 月 3rd
取任意长度的消息,生成一个固定长度的散列值,或者叫做摘要。哈希函数的实现都是公开的,它广泛应用于文件完整性检测、数字签名中。登录密码也有用到哈希函数,一般网站在数据库中不是直接存储的用户密码,而是密码的哈希值,这样即使数据库暴露,攻击者仍然是不知道密码的明文的。
这要求Hash函数拥有以下特性:一是单向性,即不可逆性,我们无法从哈希值反过来得到原文。二是冲突碰撞抵御能力,即找到两个不同的消息原文,他们的哈希值相同,这在计算上不可行。
实际上,MD5已经不再安全。在2005年,我国山东大学王小云教授成功破解MD5算法,使得使用普通电脑在数小时内即可找到哈希碰撞,这在国际密码学领域引发地震。 更多 >
2011 1 月 3rd
DH密钥交换算法,是第一个提出的公开密钥算法,它比RSA还要早提出。它使得在公开的不可信信道安全地交换密钥成为可能。但DH算法无法抵御中间人攻击,必须借用数字签名才足够安全。
下面是使用openssl进行DH密钥交换的示例程序: 更多 >
2011 1 月 3rd
AES是一套对称密钥的密码术,目前已广泛使用,用于替代已经不够安全的DES算法。所谓对称密钥,就是说加密和解密用的是同一个密钥,消息的发送方和接收方在消息传递前需要享有这个密钥。和非对称密钥体系不同,这里的密钥是双方保密的,不会让任何第三方知道。
对称密钥加密法主要基于块加密,选取固定长度的密钥,去加密明文中固定长度的块,生成的密文块与明文块长度一样。显然密钥长度十分重要,块的长度也很重要。如果太短,则很容易枚举出所有的明文-密文映射;如果太长,性能则会急剧下降。AES中规定块长度为128 bit,而密钥长度可以选择128, 192或256 bit 。暴力破解密钥需要万亿年,这保证了AES的安全性。
AES的算法较为复杂,在此不细加阐述。下面是使用openssl进行AES加密和解密的示例程序: 更多 >
2010 12 月 31st
一个十年的结束,同时又是又一个十年的开始。这一路走来,对于你对于我,都意味着很多不同。
光阴似水流年,我们去走遍想去的每一个角落,记住生命中的每一个名字。每一天,注定不同。
踏着时间的阶梯,往上走,是看不到十年的路的。看不到,还是有希望。
对于未来,你不能缺少希冀。
2010 12 月 10th
又遇到这个问题,之前是VMware,现在是VBox。boluer和Felix提供的方法还是很麻烦,下面这个应该是最简单的了。调通VirtualBox虚拟机互连、主宿机互连、以及主宿机连接互联网,以后ssh到众多虚拟机里面开工,方便很多。另外强烈推荐ssh客户端SSH Secure Shell,它的File transfer功能做得和FTP一样,主宿互传文件相当cool~
修改自http://www.cnblogs.com/cocowool/archive/2010/05/27/1745090.html
1、VirtualBox中的虚拟网卡。VirtualBox安装完成后,会在系统中装一块虚拟网卡,我们在管理->全局设定中可以看到。这块网卡是在 Host-Only 连接方式中,主宿机互访的桥梁。
2、主机访问虚拟机通过Host Only的方式实现。
主机访问虚拟机这个是最简单的。通过在网络连接1中选择 Host-only Adapter ,我们的虚拟机就可以获得一个内网的地址,主机可以直接访问这个地址。我们可以使用DHCP,也可以自己指定IP,多数情况下,都会指定一个固定的IP。 更多 >
2010 12 月 2nd
先放放眼下好几个deadline,忙里偷闲写篇日志吧。
Let me put the several deadlines aside, and write something to relax.
更多 >
2010 11 月 9th
2010 11 月 7th
今天在实现一个队列时犯了一个很傻逼的错误。一个定义为struct类型的全局变量,我在想定义完后立刻初始化,就写成类似下面这种样子:
struct
{
int i;
int j;
} test;
test.i = 1;
test.j = 1;
结果gcc编译器报错,“initializer element is not constant”
在我的实际情况中,test的成员变量i和j也为strcut类型,报的错为“struct expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘”
真神奇,int char类型都可以直接初始化,struct类型就不行。
最后在http://bbs.chinaunix.net/thread-1285396-1-1.html的4楼找到了说法。全局变量在编译时就必须确定其值,故C有静态存储区数据必须用常量初始化的规定。
其实很简单, 在全局空间定义struct test,然后再写一个初始化函数对test进行赋值就可以了。