200分求文件(夹)加解密相关资料

yinweihong 西北农林科技大学 2005-04-16 06:14:15
终于熬到毕业了,要做毕业设计啊~

求:
1.文件夹加解密原理及算法 (资料介绍也可以)
2.将加密后的文件压缩成可执行文件的原理及算法(脱离主程序解密)

请大家帮帮忙,拜托了!!!
bafony@163.com

至于那些什么VB的N个加解密类模块一系列的不要了,我有,哪位大哥有以上资料,分不是问题
...全文
223 点赞 收藏 25
写回复
25 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yinweihong 2005-04-27
明天中午结贴,还有哪位兄弟补充补充没有
回复
xushixu 2005-04-27
樓主有看過魔法兔子加密Windows下的文件夾的方法嗎﹖﹖
我覺得那樣子的還可以﹐而且比較簡單。。。
建議可以借鑒一下﹗
回复
hsf1024 2005-04-27
up
回复
yankao 2005-04-27
两种加密方法

  加密技术通常分为两大类:“对称式”和“非对称式”。

  对称式加密就是加密和解密使用同一个密钥,通常称之为“Session Key ”这种加密技术目前被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56Bits。

  非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难把密钥告诉对方,不管用什么方法都有可能被别窃听到。而非对称式的加密方法有两个密钥,且其中的“公钥”是可以公开的,也就不怕别人知道,收件人解密时只要用自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题。

  加密技术中的摘要函数(MAD、MAD和MAD)

  摘要是一种防止改动的方法,其中用到的函数叫摘要函数。这些函数的输入可以是任意大小的消息,而输出是一个固定长度的摘要。摘要有这样一个性质,如果改变了输入消息中的任何东西,甚至只有一位,输出的摘要将会发生不可预测的改变,也就是说输入消息的每一位对输出摘要都有影响。总之,摘要算法从给定的文本块中产生一个数字签名(fingerprint或message digest),数字签名可以用于防止有人从一个签名上获取文本信息或改变文本信息内容和进行身份认证。摘要算法的数字签名原理在很多加密算法中都被使用,如SO/KEY和PIP(pretty good privacy)。

  现在流行的摘要函数有MAD和MAD,但要记住客户机和服务器必须使用相同的算法,无论是MAD还是MAD,MAD客户机不能和MAD服务器交互。

  MAD摘要算法的设计是出于利用32位RISC结构来最大其吞吐量,而不需要大量的替换表(substitution table)来考虑的。

  MAD算法是以消息给予的长度作为输入,产生一个128位的"指纹"或"消息化"。要产生两个具有相同消息化的文字块或者产生任何具有预先给定"指纹"的消息,都被认为在计算上是不可能的。

  MAD摘要算法是个数据认证标准。MAD的设计思想是要找出速度更快,比MAD更安全的一种算法,MAD的设计者通过使MAD在计算上慢下来,以及对这些计算做了一些基础性的改动来解决安全性这一问题,是MAD算法的一个扩展。

密钥的管理

  密钥既然要求保密,这就涉及到密钥的管理问题,管理不好,密钥同样可能被无意识地泄露,并不是有了密钥就高枕无忧,任何保密也只是相对的,是有时效的。要管理好密钥我们还要注意以下几个方面:

  1、密钥的使用要注意时效和次数

  如果用户可以一次又一次地使用同样密钥与别人交换信息,那么密钥也同其它任何密码一样存在着一定的安全性,虽然说用户的私钥是不对外公开的,但是也很难保证私钥长期的保密性,很难保证长期以来不被泄露。如果某人偶然地知道了用户的密钥,那么用户曾经和另一个人交换的每一条消息都不再是保密的了。另外使用一个特定密钥加密的信息越多,提供给窃听者的材料也就越多,从某种意义上来讲也就越不安全了。

  因此,一般强调仅将一个对话密钥用于一条信息中或一次对话中,或者建立一种按时更换密钥的机制以减小密钥暴露的可能性。

  2、多密钥的管理

  假设在某机构中有100个人,如果他们任意两人之间可以进行秘密对话,那么总共需要多少密钥呢?每个人需要知道多少密钥呢?也许很容易得出答案,如果任何两个人之间要不同的密钥,则总共需要4950个密钥,而且每个人应记住99个密钥。如果机构的人数是1000、10000人或更多,这种办法就显然过于愚蠢了,管理密钥将是一件可怕的事情。

  Kerberos提供了一种解决这个较好方案,它是由MIT发明的,使保密密钥的管理和分发变得十分容易,但这种方法本身还存在一定的缺点。为能在因特网上提供一个实用的解决方案,Kerberos建立了一个安全的、可信任的密钥分发中心(Key Distribution Center,KDC),每个用户只要知道一个和KDC进行会话的密钥就可以了,而不需要知道成百上千个不同的密钥。

  假设用户甲想要和用户乙进行秘密通信,则用户甲先和KDC通信,用只有用户甲和KDC知道的密钥进行加密 ,用户甲告诉KDC他想和用户乙进行通信,KDC会为用户甲和用户乙之间的会话随机选择一个对话密钥,并生成一个标签,这个标签由KDC和用户乙之间的密钥进行加密,并在用户甲启动和用户乙对话时,用户甲会把这个标签交给用户乙。这个标签的作用是让用户甲确信和他交谈的是用户乙,而不是冒充者。因为这个标签是由只有用户乙和KDC知道的密钥进行加密的,所以即使冒充者得到用户甲发出的标签也不可能进行解密,只有用户乙收到后才能够进行解密,从而确定了与用户甲对话的人就是用户乙。

  当KDC生成标签和随机会话密码,就会把它们用只有用户甲和KDC知道的密钥进行加密,然后把标签和会话钥传给用户甲,加密的结果可以确保只有用户甲能得到这个信息,只有用户甲能利用这个会话密钥和用户乙进行通话。同理,KDC会把会话密码用只有KDC和用户乙知道的密钥加密,并把会话密钥给用户乙。

  用户甲会启动一个和用户乙的会话,并用得到的会话密钥加密自己和用户乙的会话,还要把KDC传给它的标签传给用户乙以确定用户乙的身份,然后用户甲和用户乙之间就可以用会话密钥进行安全的会话了,而且为了保证安全,这个会话密钥是一次性的,这样黑客就更难进行破解了。同时由于密钥是一次性由系统自动产生的,则用户不必记那么多密钥了,方便了人们的通信。

 数据加密的标准

  最早、最著名的保密密钥或对称密钥加密算法DES(Data Encryption Standard)是由IBM公司在70年代发展起来的,并经政府的加密标准筛选后,于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National Standard Institute,ANSI)承认。

  DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。与每轮编码时,一个48位的"每轮"密钥值由56位的完整密钥得出来。DES用软件进行解码需用很长时间,而用硬件解码速度非常快。幸运的是,当时大多数黑客并没有足够的设备制造出这种硬件设备。在1977年,人们估计要耗资两千万美元才能建成一个专门计算机用于DES的解密,而且需要12个小时的破解才能得到结果。当时DES被认为是一种十分强大的加密方法。

  随着计算机硬件的速度越来越快,制造一台这样特殊的机器的花费已经降到了十万美元左右,而用它来保护十亿美元的银行,那显然是不够保险了。另一方面,如果只用它来保护一台普通服务器,那么DES确实是一种好的办法,因为黑客绝不会仅仅为入侵一个服务器而花那么多的钱破解DES密文。

  另一种非常著名的加密算法就是RSA了,RSA(Rivest-Shamir-Adleman)算法是基于大数不可能被质因数分解假设的公钥体系。简单地说就是找两个很大的质数。一个对外公开的为“公钥”(Prblic key) ,另一个不告诉任何人,称为"私钥”(Private key)。这两个密钥是互补的,也就是说用公钥加密的密文可以用私钥解密,反过来也一样。

  假设用户甲要寄信给用户乙,他们互相知道对方的公钥。甲就用乙的公钥加密邮件寄出,乙收到后就可以用自己的私钥解密出甲的原文。由于别人不知道乙的私钥,所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。另一方面,由于每个人都知道乙的公钥,他们都可以给乙发信,那么乙怎么确信是不是甲的来信呢?那就要用到基于加密技术的数字签名了。

  甲用自己的私钥将签名内容加密,附加在邮件后,再用乙的公钥将整个邮件加密(注意这里的次序,如果先加密再签名的话,别人可以将签名去掉后签上自己的签名,从而篡改了签名)。这样这份密文被乙收到以后,乙用自己的私钥将邮件解密,得到甲的原文和数字签名,然后用甲的公钥解密签名,这样一来就可以确保两方面的安全了。

***自己收閱的文章望對你能有幫助!不勝榮幸!***
回复
yankao 2005-04-27
up
回复
wjasd 2005-04-27
up
回复
zuoxingyu 2005-04-27
up
回复
yinweihong 2005-04-20
UP,可怜的UP呀!
回复
warran21 2005-04-19
up
回复
chendjin 2005-04-19
哎,没有新内容,不能沉底,顶一下。
回复
cowley 2005-04-18
加密就是利用某个密钥对其进行重新排序或改变,接密的时候就是回复原先的内容就好了!
回复
zlt982001 2005-04-18
我也曾经关注过,
文件夹的加密和隐藏
但没有找到相关的资料
不知道会不会是在 Fat 表上作手脚,考虑到高级语言无法直接对硬件进行操作,所以。。。
回复
penguinMII 2005-04-18
学习
回复
chendjin 2005-04-18
学习+顶。
回复
yinweihong 2005-04-18
顶上去,还在VB这边放几天,急啊!!!
回复
yinweihong 2005-04-18
晕了~ 沉到不知道那一页去了,哪位帮下忙!
回复
MmMVP 2005-04-17
这个是以前cfan上一个pic加密的方法
回复
MmMVP 2005-04-17
像加密金刚锁[压缩已加密文件为EXE]高强度文件夹加密大师 [ 文件夹加密方法]
是不是这样的资料真的没有啊~
========================================================================
[压缩已加密文件为EXE]就是用文件绑定方法可以实现的。

具体请参考:

自己动手做QQ木马--文件绑定篇
http://dev.csdn.net/Develop/article/17/17647.shtm
文章很详细的讲了如何绑定两个exe 然后运行,只要把两个exe改成把主程序的解密模块编译成程序,然后和加密的数据文件进行绑定,运行时解绑再解密就可以了。
==========================================================================
关于[ 文件夹加密方法]
我有个思路,是 二进制信息 与 循环+1的密码逐位Xor,这样密码错了的话,得到的就是乱码了。


加密部分:
Seek #1, glbmpsize

Do While Not EOF(1) '跳到文件结尾
Get #1, , bytBuffer
Loop
iPassLen = Len(sPass) '密码长度
iCount = 1

For i = 1 To 8
Put #1, , CByte(256)


Get #2, , bytBuffer
Do While Not EOF(2) '循环到文件末尾
bytBuffer = bytBuffer Xor Asc(Mid(sPass, iCount, 1)) '异或加密数据
iCount = (iCount Mod iPassLen) + 1 '密码循环
Put #1, , bytBuffer
Get #2, , bytBuffer
Loop
Close #2 '关闭文件
Close #1

解密部分:
Open sFile1 For Binary Access Read As #2
Open sFile For Binary Access Write As #1
Seek #2, glbmpsize + 1
'iPassLen = Len(sPass)
'iCount = 1
Get #2, , bytBuffer
Do While Not EOF(2)
' bytBuffer = bytBuffer Xor Asc(Mid(sPass, iCount, 1))'异或解密数据
'iCount = (iCount Mod iPassLen) + 1
Put #1, , bytBuffer
Get #2, , bytBuffer
Loop
Close #2
Close #1
回复
yinweihong 2005-04-17
我现在还没有一点思路,我想再看看各位怎么说法,

还有就是怎样对一个EXE文件用密码保护起来,即运行该文件需要密码

希望有这方面资料 经验的朋友不吝赐教
回复
yinweihong 2005-04-16
像加密金刚锁[压缩已加密文件为EXE]高强度文件夹加密大师 [ 文件夹加密方法]
是不是这样的资料真的没有啊~

我是真的找了好久了,还是感谢以上几位朋友的回复


回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告