本文只是概述几种简单的传统加密算法,没有DES,没有RSA,没有想象中的高端大气上档次的东东。。。但是都是很传统很经典的一些算法
首先,提到加密,比如加密一段文字,让其不可读,一般人首先会想到的是将其中的各个字符用其他一些特定的字符代替,比如,讲所有的A用C来表示,所有的C用E表示等等…其中早的代替算法就是由Julius Caesar发明的Caesar,它是用字母表中每个字母的之后的第三个字母来代替其本身的(C=E(3,p)=(p+3) mod 26),但是,这种加密方式,很容易可以用穷举算法来破解,毕竟只有25种可能的情况..
为了改进上诉算法,增加其破解的难度,我们不用简单的有序的替代方式,我们让替代无序化,用其中字母表的一个置换(置换:有限元素的集合S的置换就是S的所有元素的有序排列,且每个元素就出现一次,如S={a,b}其置换就只有两种:ab,ba),这样的话,就有26!种方式,大大的增加了破解的难度,但是这个世界聪明人太多,虽然26!很多,但是语言本身有一定的特性,每个字母在语言中出现的相对频率可以统计出来的,这样子,只要密文有了一定数量,就可以从统计学的角度,得到准确的字母匹配了。
上面的算法我们称之为单表代替,其实单表代替密码之所以较容易被攻破,因为它带有原始字母使用频率的一些统计学特征。有两种主要的方法可以减少代替密码里明文结构在密文中的残留度,一种是对明文中的多个字母一起加密,另一种是采用多表代替密码。
先说多字母代替吧,最著名的就是playfair密码,它把明文中的双字母音节作为一个单元并将其转换成密文的双字母音节,它是一个基于由密钥词构成的5*5的字母矩阵中的,一个例子,如密钥为monarchy,将其从左往右从上往下填入后,将剩余的字母依次填入剩下的空格,其中I/J填入同一个空格:
对明文加密规则如下:
1 若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。
2 若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。
3 若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母,并且c1和p1, c2和p2同行。
4 若p1 p2相同,则插入一个事先约定的字母,比如Q 。
5 若明文字母数为奇数时,则在明文的末端添加某个事先约定的字母作为填充。
虽然相对简单加密,安全性有所提高,但是还是保留了明文语言的大部分结构特征,依旧可以破解出来,另一个有意思的多表代替密码是Hill密码,由数学家Lester Hill提出来的,其实就是利用了线性代数中的可逆矩阵,一个矩阵乘以它的逆矩阵得到单位矩阵,那么假设我们对密文每m个字母进行加密,那么将这m个字母在字母表中的序号写成矩阵形式设为P(如abc,[1,2,3]),密钥就是一个m阶的矩阵K,则C=P*K mod26,,解密的时候只要将密文乘上K的逆矩阵模26就可以了。该方法大大的增加了安全性。
目前常用的加密方法有什么如下:
1、不可逆加密算法有MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA-512,其中SHA-224、SHA-256、SHA-384,和SHA-512我们可以统称为SHA2加密算法,SHA加密算法的安全性要比MD5更高,而SHA2加密算法比SHA1的要高。
2、其中SHA后面的数字表示的是加密后的字符串长度,SHA1默认会产生一个160位的信息摘要。
用户密码加密方式
用户密码保存到数据库时,常见的加密方式有哪些?以下几种方式是常见的密码保存方式:
1. 明文保存
比如用户设置的密码是“123456”,直接将“123456”保存在数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。
2. 对称加密算法来保存
比如3DES、AES等算法,使用这种方式加密是可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥。不过既然大量的用户信息已经泄露了,密钥很可能也会泄露,当然可以将一般数据和密钥分开存储、分开管理,但要完全保护好密钥也是一件非常复杂的事情,所以这种方式并不是很好的方式。
3. MD5、SHA1等单向HASH算法
使用这些算法后,无法通过计算还原出原始密码,而且实现比较简单,因此很多互联网公司都采用这种方式保存用户密码,曾经这种方式也是比较安全的方式,但随着彩虹表技术的兴起,可以建立彩虹表进行查表破解,目前这种方式已经很不安全了。
其实之前公司也是采用的这种MD5加密方式。
4. PBKDF2算法
该算法原理大致相当于在HASH算法基础上增加随机盐,并进行多次HASH运算,随机盐使得彩虹表的建表难度大幅增加,而多次HASH也使得建表和破解的难度都大幅增加。
在使用PBKDF2算法时,HASH一般会选用sha1或者sha256,随机盐的长度一般不能少于8字节,HASH次数至少也要1000次,这样安全性才足够高。一次密码验证过程进行1000次HASH运算,对服务器来说可能只需要1ms,但对于破解者来说计算成本增加了1000倍,而至少8字节随机盐,更是把建表难度提升了N个数量级,使得大批量的破解密码几乎不可行,该算法也是美国国家标准与技术研究院推荐使用的算法。
5. bcrypt、scrypt等算法
这两种算法也可以有效抵御彩虹表,使用这两种算法时也需要 指定 相应的参数,使破解难度增加。
在密码学中,scrypt(念作“ess crypt”)是Colin Percival于2009年所发明的金钥推衍函数,当初设计用在他所创立的Tarsnap服务上。设计时考虑到大规模的客制硬件攻击而刻意设计需要大量内存运算。
Scrypt不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利 用rainbow table进行暴力攻击更加困难。Scrypt 没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。但是,Scrypt 在算法层面只要没有破绽,它的安全性应该高于PBKDF2和bcrypt。
各个算法的特性
总结
采用PBKDF2、bcrypt、scrypt等算法可以有效抵御彩虹表攻击,即使数据泄露,最关键的“用户密码”仍然可以得到有效的保护,黑客无法大批量破解用户密码,从而切断撞库扫号的根源。
【加密软件编辑推荐】
易控网盾加密软件--重要文件防泄密专家!轻松实现单位内部文件自动加密保护,加密后的文件在单位内部正常流转使用。未经许可,任何私自拷贝加密文件外发出去,都将打开为乱码,无法使用!对于发送给客户等第三方的文件,可实现控制打开时间和打开次数等防泄密参数!同时可设置对员工电脑文件自动备份,防止恶意删除造成核心数据的遗失!从源头防止企业核心文件被外泄!
相关页面:加密软件,文件加密,文档加密,图纸加密软件,防泄密软件,CAD加密软件,文件外发加密
分类: 电脑/网络 软件
问题描述:
我想做个文件加密的小软件,想得到大家的一点点支持?
谁有好的加密方法,请告诉我,谢谢!
解析:
文件加密
方法一:后缀名加密法
严格地说,这并不是一诈唬 加密的方法,因为这种方法对高手无用!但真正的高手是不会关注你的。这种方法就是将你想保密的文件改为一个任意字符的后缀名。如:将123.doc改为456.swc,在别人来看,是很难知道其中的秘密的。
方法二:目录欺骗法
新建一个目录,把想保密的文件放入该文件夹,然后将文件夹改名为“123.wav.{00020c01-0000-0000-c000-000000000046}”,你会看到你的这个文件夹会变成一个WAV文件的图标,双击它也是打开媒体播放器(但就是无法播放)。想浏览该文件需要在“资源管理器”里。
方法三:使用软件法
使用一些专业的文件加密软件即可。这一类软件网上多的是,大家可以搜索下载。
方法四:硬件加密
就是利用一些诸如“硬件狗”等这类工具进行相关的设定,使用计算机时必须使用这类硬件才能正常启动电脑和使用。
又如:微星公司为其主板专门设计的USB接口加密锁,只有当计算机插上这个加密锁之后,才能进操作系统和正常使用。不用这个USB加密锁即使你清空CMOS也是无济于事。
=========================
用文件加密器
自己看看下面的连接
微软中国EFS加密专题
microsoft/china/tech/security/sgk/protect_data_EFS.mspx
E-神加密文件夹 2005
nj.onlinedown/soft/22072
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎2
加密金刚锁 v7.403
crsky/soft/991
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
万能加密器 v5.5 正式版
crsky/soft/746
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
小李文件加密II v7.0 Build 0110
crsky/soft/1260
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
金锋文件加密器 v4.3 标准版
crsky/soft/1327
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
超白金加密 v8.70
crsky/soft/1616
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
加密精灵(EncryptGenie) v2.68.1
crsky/soft/1031
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
文件加密器(FDET) v4.56
crsky/soft/2452
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
E-钻文件夹加密大师 Build 050721
crsky/soft/6168
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
梦幻加密精灵 2004 v1.21
crsky/soft/3305
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
狡兔三窟加密锁 v3.0
crsky/soft/3151
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
枫叶文件加密器 v1.0
crsky/soft/2587
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
Wkh文件加密器 v3.05
crsky/soft/3177
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
狡兔三窟加密器 v2.11
crsky/soft/2991
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
E钻文件夹加密大师 v1.2
crsky/soft/5435
◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
CipherOne加密钻石锁 v5.1
crsky/soft/5673
还有个方法
电脑里经常会存储着重要文件,这些文件需要进行加密,有许多方法来实现。但如果想对一个文件夹里的所有文件都进行加密,数量少还可以,要是数量多岂不是得把人累死?因此,今天我要告诉您一个好方法:给Windows 9x/2000文件夹加密。通过给一个文件夹加密就可使该文件夹里的所有文件得到保护。其工作效果,就是在您双击进入该文件夹时系统提示您输入密码,正确则进入,错误则自动退回到硬盘根目录下——非常好用!
1、进入您要进行加密保护的文件夹中,在空白处单击鼠标右键,选择“自定义文件夹…”选项;
2、单击“下一步”选择“自定义”并在副选框中选择“选择或编辑该文件夹的模板”,单击“下一步”;
3、在选择模板类型中选择“标准”,并将“编辑该模板”选项选中,单击“下一步”;
4、在弹出的“Folder”文件中找到〈script language="JavaScript"〉,在其下方顶头输入以下内容:
var pass = prompt("请输入密码")该处的“请输入密码”为系统提示语
if(pass != "123") “123”处换成您自己设定的密码
{window.location="c:"}
5、保存“Folder”文件之后,选择完成,文件夹加密就完成了,您可以进行测试啦
因为刚才的诸多步骤就是Windows的脚本编程,所以经验证,该方法适用于所有Windows系统。如果需要去掉保护,只需要把“Folder”文件修改回原样就好啦!
由于Windows版本不同,细微之处会有所区别,如在Windows Me中,“Folder”文件中就没有〈script language="JavaScript"〉字段,而只有〈script〉,放到它后面也同样起作用。文件夹向导也不尽相同,请大家举一反三。