❶ 文件加密软件哪个最好用
文件加密软件最好闹正用的如下:
1、隐身侠隐私文件加密工具
隐身侠加密软件是意畅公司自主研发,用于保护电脑及移动存储设备中的重要文件、私密信息以及多种程序的新一代电脑信息安全产品。隐身侠加密软件已获得公安部销售许可证、国家保密局检测证书、国家密码管理局销售许可证、国家版权局软件著作权证书等多项权威资质认证。
❷ java环境下实现idea算法的加密解密
基于Java的IDEA加密算法探讨
随着Internet的迅速发展,电子商务的浪潮势不可挡,日常工作和数据传输都放在Internet网上进行传输,大大提高了效率,降低了成本,创造了良好的效益。但是,由于 Internet网络协议本身存在着重要的安全问题(IP包本身并不继承任何安全特性,很容易伪造出IP包的地址、修改其内容、重播以前的包以及在传输途中拦截并查看包的内容),使网上的信息传输存在巨大的安全风险电子商务的安全问题也越来越突出。加密是电子商务中最主要的安全技术,加密方法的选取直接影响电子商务活动中信息的安全程度,在电子商务系统中,主要的安全问题都可以通过加密来解决。数据的保密性可通过不同的加密算法对数据加密来实现。
对我国来讲,虽然可以引进很多的外国设备,但加密设备不能依靠引进,因为它涉及到网络安全、国家机密信息的安全,所以必须自己研制。当前国际上有许多加密算法,其中DES(Data Encryption Standard)是发明最早的用得最广泛的分组对称加密算法,DES用56位蜜钥加密64位明文,输出64位密文,DES的56位密钥共有256 种可能的密钥,但历史上曾利用穷举攻击破解过DES密钥,1998年电子边境基金会(EFF)用25万美元制造的专用计算机,用56小时破解了DES的密钥,1999年,EFF用22小时完成了破解工作,使DES算法受到了严重打击,使它的安全性受到严重威胁。因为JAVA语言的安全性和网络处理能力较强,本文主要介绍使用IDEA(Internation Data Encryption Algorithm )数据加密算法在Java环境下实现数据的安全传输。
一、IDEA数据加密算法
IDEA数据加密算法是由中国学者来学嘉博士和著名的密码专家 James L. Massey 于1990年联合提出的。它的明文和密文都是64比特,但密钥长为128比特。IDEA 是作为迭代的分组密码实现的,使用 128 位的密钥和 8 个循环。这比 DES 提供了更多的 安全性,但是在选择用于 IDEA 的密钥时,应该排除那些称为“弱密钥”的密钥。DES 只有四个弱密钥和 12 个次弱密钥,而 IDEA 中的弱密钥数相当可观,有 2 的 51 次方个。但是,如果密钥的总数非常大,达到 2 的 128 次方个,那么仍有 2 的 77 次方个密钥可供选择。IDEA 被认为是极为安全的。使用 128 位的密钥,蛮力攻击中需要进行的测试次数与 DES 相比会明显增大,甚至允许对弱密钥测试。而且,它本身也显示了它尤其能抵抗专业形式的分析性攻击。
二、Java密码体系和Java密码扩展
Java是Sun公司开发的一种面向对象的编程语言,并且由于它的平台无关性被大量应用于Internet的开发。Java密码体系(JCA)和Java密码扩展(JCE)的设计目的是为Java提供与实现无关的加密函数API。它们都用factory方法来创建类的例程,然后把实际的加密函数委托给提供者指定的底层引擎,引擎中为类提供了服务提供者接口在Java中实现数据的加密/解密,是使用其内置的JCE(Java加密扩展)来实现的。Java开发工具集1.1为实现包括数字签名和信息摘要在内的加密功能,推出了一种基于供应商的新型灵活应用编程接口。Java密码体系结构支持供应商的互操作,同时支持硬件和软件实现。Java密码学结构设计遵循两个原则:(1)算法的独立性和可靠性。(2)实现的独立性和相互作用性。算法的独立性是通过定义密码服务类来获得。用户只需了解密码算法的概念,而不用去关心如何实现这些概念。实现的独立性和相互作用性通过密码服务提供器来实现。密码服务提供器是实现一个或多个密码服务的一个或多个程序包。软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用户可以安装不同的提供器。安装和配置提供器,可将包含提供器的ZIP和JAR文件放在CLASSPATH下,再编辑Java安全属性文件来设置定义一个提供器。Java运行环境Sun版本时,提供一个缺省的提供器Sun。
三、Java环境下的实现
1.加密过程的实现
void idea_enc( int data11[], /*待加密的64位数据首地址*/ int key1[]){
int i ;
int tmp,x;
int zz[]=new int[6];
for ( i = 0 ; i < 48 ; i += 6) { /*进行8轮循环*/
for(int j=0,box=i; j<6; j++,box++){
zz[j]=key1[box];
}
x = handle_data(data11,zz);
tmp = data11[1]; /*交换中间两个*/
data11[1] = data11[2];
data11[2] = tmp;
}
tmp = data11[1]; /*最后一轮不交换*/
data11[1] = data11[2];
data11[2] = tmp;
data11[0] = MUL(data11[0],key1[48]);
data11[1] =(char)((data11[1] + key1[49])%0x10000);
data11[2] =(char)((data11[2] + key1[50])%0x10000);
data11[3] = MUL(data11[3],key1[51]);
}
2.解密过程的实现
void key_decryExp(int outkey[])/*解密密钥的变逆处理*/
{ int tmpkey[] = new int[52] ;
int i;
for ( i = 0 ; i < 52 ; i++) {
tmpkey[i] = outkey[ wz_spkey[i] ] ; /*换位*/
}
for ( i = 0 ; i < 52 ; i++) {
outkey[i] = tmpkey[i];
}
for ( i = 0 ; i < 18 ; i++) {
outkey[wz_spaddrever[i]] = (char)(65536-outkey[wz_spaddrever[i]]) ; /*替换成加法逆*/
}
for ( i = 0 ; i < 18 ; i++){
outkey[wz_spmulrevr[i]] =(char)(mulInv(outkey[wz_spmulrevr[i]] )); /*替换成乘法逆*/
}
}
四、总结
在实际应用中,我们可以使用Java开发工具包(JDK)中内置的对Socket通信的支持,通过JCE中的Java流和链表,加密基于Socket的网络通信.我们知道,加密/解密是数据传输中保证数据完整性的常用方法,Java语言因其平台无关性,在Internet上的应用非常之广泛.使用Java实现基于IDEA的数据加密传输可以在不同的平台上实现并具有实现简洁、安全性强等优点。
❸ 十大常见密码加密方式
一、密钥散列
采用MD5或者SHA1等散列算法,对明文进行加密。严格来说,MD5不算一种加密算法,而是一种摘要算法。无论多长的输入,MD5都会输出一个128位(16字节)的散列值。而SHA1也是流行的消息摘要算法,它可以生成一个被称为消息摘要的160位(20字节)散列值。MD5相对SHA1来说,安全性较低,但是速度快;SHA1和MD5相比安全性高,但是速度慢。
二、对称加密
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密。对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
三、非对称加密
非对称加密算法是一种密钥的保密方法,它需要两个密钥来进行加密和解密,这两个密钥是公开密钥和私有密钥。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。非对称加密算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。
四、数字签名
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。
五、直接明文保存
早期很多这样的做法,比如用户设置的密码是“123”,直接就将“123”保存到数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。
六、使用MD5、SHA1等单向HASH算法保护密码
使用这些算法后,无法通过计算还原出原始密码,而且实现比较简单,因此很多互联网公司都采用这种方式保存用户密码,曾经这种方式也是比较安全的方式,但随着彩虹表技术的兴起,可以建立彩虹表进行查表破解,目前这种方式已经很不安全了。
七、特殊的单向HASH算法
由于单向HASH算法在保护密码方面不再安全,于是有些公司在单向HASH算法基础上进行了加盐、多次HASH等扩展,这些方式可以在一定程度上增加破解难度,对于加了“固定盐”的HASH算法,需要保护“盐”不能泄露,这就会遇到“保护对称密钥”一样的问题,一旦“盐”泄露,根据“盐”重新建立彩虹表可以进行破解,对于多次HASH,也只是增加了破解的时间,并没有本质上的提升。
八、PBKDF2
该算法原理大致相当于在HASH算法基础上增加随机盐,并进行多次HASH运算,随机盐使得彩虹表的建表难度大幅增加,而多次HASH也使得建表和破解的难度都大幅增加。
九、BCrypt
BCrypt 在1999年就产生了,并且在对抗 GPU/ASIC 方面要优于 PBKDF2,但是我还是不建议你在新系统中使用它,因为它在离线破解的威胁模型分析中表现并不突出。
十、SCrypt
SCrypt 在如今是一个更好的选择:比 BCrypt设计得更好(尤其是关于内存方面)并且已经在该领域工作了 10 年。另一方面,它也被用于许多加密货币,并且我们有一些硬件(包括 FPGA 和 ASIC)能实现它。 尽管它们专门用于采矿,也可以将其重新用于破解。
❹ 甯歌佺殑缂栫爜鍜屽姞瀵嗙畻娉曟湁鍝浜
甯歌佺殑缂栫爜鍜屽姞瀵嗙畻娉曞寘鎷珹SCII缂栫爜銆乁TF-8缂栫爜銆丄ES鍔犲瘑銆丷SA鍔犲瘑绛夈
1. ASCII缂栫爜
ASCII (American Standard Code for Information Interchange) 鏄鏈鍩虹鐨勫瓧绗︾紪鐮佹柟寮忋傚畠鐢7浣嶈〃绀轰竴涓瀛楃︼紝鎬诲叡鍙浠ヨ〃绀128涓瀛楃︼紝鍖呮嫭鑻辨枃瀛楁瘝锛堝ぇ鍐欏拰灏忓啓锛夈佹暟瀛椼佹爣鐐圭﹀彿銆佹帶鍒跺瓧绗︾瓑銆傜敱浜庡叾绠鍗曟槗鎳傦紝琚骞挎硾鐢ㄤ簬璁$畻鏈哄拰閫氫俊绯荤粺涓銆
2. UTF-8缂栫爜
UTF-8 (Unicode Transformation Format-8 bits) 鏄涓绉嶉拡瀵筓nicode鐨勫彲鍙橀暱搴﹀瓧绗︾紪鐮侊紝鍙浠ョ敤1鍒4涓瀛楄妭琛ㄧず涓涓瀛楃︺俇TF-8缂栫爜娑电洊浜嗕笘鐣屼笂鍑犱箮鎵鏈夌殑涔﹀啓璇瑷锛屾槸瀹炵幇鍥介檯鍖栫殑閲嶈佸伐鍏枫傜敱浜庡叾鍏煎笰SCII缂栫爜锛屼笖鍦ㄨ〃绀鸿嫳鏂囧瓧绗︽椂鍙闇瑕佷竴涓瀛楄妭锛屽洜姝よ骞挎硾鐢ㄤ簬浜掕仈缃戝拰杞浠跺紑鍙戜腑銆
3. AES鍔犲瘑
AES (Advanced Encryption Standard) 鏄缇庡浗鑱旈偊鏀垮簻閲囩敤鐨勪竴绉嶅尯鍧楀姞瀵嗘爣鍑嗐傚畠閲囩敤瀵圭О瀵嗛挜鍔犲瘑鏂瑰紡锛屽嵆鍔犲瘑鍜岃В瀵嗕娇鐢ㄥ悓涓涓瀵嗛挜銆侫ES鍔犲瘑鐨勫畨鍏ㄦч潪甯搁珮锛岃骞挎硾搴旂敤浜庡悇绉嶉渶瑕佷繚鎶ゆ暟鎹瀹夊叏鐨勫満鍚堬紝濡傛棤绾块氫俊銆佺數瀛愬晢鍔°侀噾铻嶄氦鏄撶瓑銆
4. RSA鍔犲瘑
RSA (Rivest-Shamir-Adleman) 鏄涓绉嶉潪瀵圭О鍔犲瘑绠楁硶锛屽嵆鍔犲瘑鍜岃В瀵嗕娇鐢ㄤ笉鍚岀殑瀵嗛挜銆傚叾涓锛屽叕閽ョ敤浜庡姞瀵嗘暟鎹锛岀侀挜鐢ㄤ簬瑙e瘑鏁版嵁銆俁SA绠楁硶鐨勫畨鍏ㄦу熀浜庡ぇ鏁板垎瑙i棶棰樼殑鍥伴毦鎬э紝琚骞挎硾搴旂敤浜庢暟瀛楃惧悕銆佽韩浠介獙璇併佸畨鍏ㄩ氫俊绛夐嗗煙銆備緥濡傦紝鍦ㄧ綉缁滆喘鐗╀腑锛屽晢瀹跺彲浠ョ敤RSA绠楁硶鍔犲瘑鐢ㄦ埛鐨勪俊鐢ㄥ崱淇℃伅锛屼互纭淇濅俊鎭鍦ㄤ紶杈撹繃绋嬩腑涓嶈绐冨彇銆
浠ヤ笂鍥涚嶇紪鐮佸拰鍔犲瘑绠楁硶鍦ㄤ俊鎭瀹夊叏棰嗗煙鏈夌潃骞挎硾鐨勫簲鐢ㄣ傞氳繃浜嗚В杩欎簺绠楁硶鐨勫師鐞嗗拰搴旂敤鍦烘櫙锛屾垜浠鍙浠ユ洿濂藉湴鐞嗚В濡備綍淇濇姢鏁版嵁鐨勬満瀵嗘у拰瀹屾暣鎬с
❺ 加密解密工具:普莱费尔密码
普莱费尔密码(英文:Playfair Cipher 或 Playfair Square)是一种使用一个关键词方格来加密字符对的加密法,1854年由一位名叫查尔斯·惠斯通(Charles Wheatstone)的英国人发明。
简介
经莱昂·普莱费尔提倡在英国军地和政府使用。它有一些不太明显的特征:密文的字母数一定是偶数;任意两个慧培同组的字母都不会相同,如果出现这种字符必是乱码和虚码。
它使用方便而且可以让频度分析法变成瞎子,在1854到1855年的克里米亚战争和1899年的布尔战争中有广泛应用。但在1915年的一战中被破译了。
编写分三步:
1.编制密码表
2.整理明文
3.编写密文 构成部分:
1.密钥
2.明文
3.密文
4.注明的某个字母代替的另一个字母。
算法
它依据含纤一个5*5的正方形组成的密码表来编写,密码表里排列有25个字母。5*5的密码表,共有5行5列字母。第一列(或第一行)是密前老唯钥,其余按照字母顺序,如果密钥过长可占用第二列或行。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉。当然也要把使用频率最少的字母去掉(它依据一个5*5的正方形组成的密码表来编写,密码表里排列有25个字母。如果一种语言字母超过25个,可以去掉使用频率最少的一个。如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待,英语中z使用最少,可以去掉它)。
工具链接: http://www.atoolbox.net/Tool.php?Id=912