对文件进行数字签名
来源:互联网 发布:淘宝上有卖A片吗 编辑:程序博客网 时间:2024/06/07 12:15
未整理:
对文件进行数字签名大致上是这样做的,当用户连接设备的会话结束以后,系统对LOG文件后面再上一串固定的字符串(64个字符差不多了,需保密),然后用MD5进行hash,这样将得到一串128位的hash,把它存储到数据库。每次检验的时候,用以上算法对log文件重新计算一遍,如果结果跟数据库里面的一致,就说明文件没有被修改,否则就有问题
Hash算法不管是MD5也好SHA1也好. 他们都是一种散列算法,其算法的特点是,可以把任意长度的字符串经过运算生成固定长度的字符串,并且这个产生的字符串代表着原来字符串里的所有字符。
简单的举个例子,就拿我上面说的那个帖子里面的 kc_ren(天堂龙)的例子:
admin 加密后:
16位8f00b204e9800998
32位d41d8cd98f00b204e9800998ecf8427e
其中不管是16位也好,32位也好其生成的字符串8f00b204e9800998 (16bit)或者d41d8cd98f00b204e9800998ecf8427e(32bit)他们表示着admin这个原始字符串.
只要admin这个字符串没有变,不管怎样重复使用MD5或者SHA1进行重新运算,其结果保持不变。
利用这个特点,在计算机安全学上,我们使用这种算法来保证数据完整性(Integrity)
这里提到计算机安全学,我在这里扩充一下:简单的概述计算机安全学,其实就是一门在讲关于 CIA
的学科。 C = Confidentiality (机密性), I = Integrity (完整性), A = Avalibility(可用性)
显而易见Hash算法,是用来保证 Integrity的算法。什么叫做完整性,不单单指数据不丢失,并且要保证数据没有被非法修改过。举个简单的例子。
比如:A 发了一个Email给B内容为"Hello",因为我们目前使用的以太网的特点,任何人在网络上都有可能截获这封Email,任何人都有可能,修改Hello这个字符串。那么当B收到这封A发来的Email的时候,怎么确定这封Email在传送过程中没有被修改过呢? 我们就使用了Hash算法来保证数据的完整性。他的工作方式是这样的:
1.A写一封Email内容为Hello
2.A用Hash算法对Hello进行编码(这里我用了编码,没有用加密这个词)
3.A将原始Email Hello 以及经过Hash算法编码过后的digest(原始Email的摘要信息)一起发送给B
(因此,A给B发的Email由2部分组成,1是原始的Hello,2是经过Hash编码的摘要信息)
4.B接收到了A的Email,首先分离由2部分组成的邮件。
5.B通过Hash算法,根据收到的Email的内容,重新计算出该Email的摘要信息.
6.B将自己计算出的摘要信息和收到的摘要信息进行比较,如果比较结果一样,则认为这封Email在中途没有被修改过,否则的话,这封Email在中途一定被修改过,因此内容不可信。
至此,保证了原始数据的完整性。
很多人在使用Hash算法在对密码进行所谓的加密,其实是不妥的。这样做的最终结果最多最多就是能够让使用的这个软件的人放心。放心什么呢?放心的就是他们在你的软件里面所保存的密码,开发软件的人不能获得。除此之外,没有其他任何价值。如果一定要说出其他的价值的话。也就是如果开发软件的人员或者维护该软件的人员不小心将含有客户密码数据的数据库泄密的话,得到这个数据库的人,无法从数据库中获得那些客户的密码。 但是,大家想想清楚,我都获得了数据库的数据,我还需要那些密码干什么呢?
- 对文件进行数字签名
- 对文件进行DSA数字签名
- 对CAB文件进行数字签名
- 对exe文件进行数字签名
- Java对文件进行数字签名
- 对Android中的apk文件进行数字签名及版本更新时遇到apk签名问题
- 关于对MIDlet套件进行数字签名
- 如何对ActiveX进行数字签名问题
- 对Java Web Start进行数字签名
- 对PDF进行数字签名和文档加密
- 如何对jar包进行数字签名
- 对安卓apk进行数字签名
- signtool.exe 对exe程序进行数字签名
- 对字符串进行MD5数字签名加密
- 制作测试证书对ActiveX进行数字签名的命令
- 对Java Applet和Java Web Start进行数字签名
- 对混淆后的.Net程序集进行数字签名
- 关于在applet中对jar包进行数字签名问题.
- 代码覆盖率——gcov lcov的使用
- 黑马程序员---关于对ADO.Net学习的总结
- 如何在 Linux 服务器上安装 apache ant?
- 谷歌电子市场[Google Play]发布应用攻略,强烈推荐!
- ASP.NET中使用URLRewriter组件实现浏览器地址栏重写
- 对文件进行数字签名
- 按指定长度截取字符串,考虑全角半角
- 7az 命令使用
- 【转载】Lucene学习笔记(一)
- java设计模式之一 桥接模式
- 第十六周实验报告(一)
- 【转载】Lucene学习笔记(二)
- Android 2.3(同样适用于之前的版本) 代码混淆proguard技术介绍
- 【转载】Lucene学习笔记(三)