几种常用数据加密算法的比较

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-15
现在常用的数据加密算法主要有哪些

用数据库做的md5映射,所以只要他的数据库里有就轻松的破解了,其实你这个问题我在以前就解决了 你可以在md5的结果里再自己做一下简单的变换,比如做一次反转之类的变化 实现起来也很简单,这样当人家不知道你在md5上加了反转 就直接去破解是破不出来的 我写了一段程序,希望对你有点帮助 import java.security.*; import java.io.*; import java.util.*; import sun.misc.BASE64Encoder; public class MD5 { public static String creatPassword(String password)throws Exception { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(password.getBytes("UTF8")); byte[] digest = md.digest(); /*在这里随便做点什么变换就可以了,可以自由发挥了,你也可以写一个反转什么的,我这里就简单点写了,注意为了保证md5的碰撞困难,最好不要改变原有的字符集,就是说最好只交换某些字符的位置,不要改变原有的值 还有你在验证的时候也要按照你发挥的方法写*/ byte tt=digest[0];digest[0]=digest[7];digest[7]=tt; String outp; outp = new BASE64Encoder().encode(digest); /*顺便说一下采用BASE64Encoder编码后原本是16位的字符变成了24位,其中前22位是有效位,不是我们常见的16位了 这里也和我们用的数据库破解也不同,变换的过程其实是吧8位的byte只取6位,然后通过加字符长度来实现*/ return outp; } public static void main(String args[])throws Exception{ String md=new MD5().creatPassword("message for test"); System.out.println(md); } } 再给你一段代码,这段代码中用到的是一种比较安全的方式,理论是使破解不出来的,因为它使用了随机盐对密码加密,对同样一段密文加密的两次结果是不一样的,但是又同样能做登录认证,这样就没办法做数据库去匹配了,有兴趣的话可以研究一下,还有,加密结果是40位 import java.security.*; import java.io.*; import java.util.*; import sun.misc.*; public class MD { //加密 public static String creatPassword(String password)throws Exception { SecureRandom random = new SecureRandom(); byte[] salt = new byte[12]; random.nextBytes(salt); MessageDigest md = MessageDigest.getInstance("MD5"); md.update(salt); md.update(password.getBytes("UTF8")); byte[] digest = md.digest(); String outp=new BASE64Encoder().encode(salt); outp = outp + new BASE64Encoder().encode(digest); return outp; } //认证,gavingPassword是客户输入的密码明文,password是存放的密码的密文 public static boolean authenticatePassword(String gavingPassword,String password ) throws Exception { String saltString = password.substring(0,16); byte[] salt = new BASE64Decoder().decodeBuffer(saltString); String digest1=password.substring(16); MessageDigest md = MessageDigest.getInstance("MD5"); md.update(salt); md.update(gavingPassword.getBytes("UTF8")); byte[] digest = md.digest(); String digest2 = new BASE64Encoder().encode(digest); if(digest1.equals(digest2)) return true; else return false; } }

使用分组密码算法数字签名常用的加密标准有:DES,Tripl-DES,RC2,RC4,CAST等。

使用公钥密码算法进行数字签名通用的加密标准有: RSA,DSA等。

数字签名是指使用密码算法对待发的数据(报文、票证等)进行加密处理,生成一段信息,附着在原文上一起发送,这段信息类似现实中的签名或印章,接收方对其进行验证,判断原文真伪。

Hash算法数字签字通用的加密标准有: SHA-1,MD5等。

自定义算法:X.509数字证书,XML数字签名等。

几种对称性加密算法:AES,DES,3DES
DES是一种分组数据加密技术(先将数据分成固定长度的小数据块,之后进行加密),速度较快,适用于大量数据加密,而3DES是一种基于DES的加密算法,使用3个不同密匙对同一个分组数据块进行3次加密,如此以使得密文强度更高。
相较于DES和3DES算法而言,AES算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密标准。
几种非对称性加密算法:RSA,DSA,ECC
RSA和DSA的安全性及其它各方面性能都差不多,而ECC较之则有着很多的性能优越,包括处理速度,带宽要求,存储空间等等。
几种线性散列算法(签名算法):MD5,SHA1,HMAC
这几种算法只生成一串不可逆的密文,经常用其效验数据传输过程中是否经过修改,因为相同的生成算法对于同一明文只会生成唯一的密文,若相同算法生成的密文不同,则证明传输数据进行过了修改。通常在数据传说过程前,使用MD5和SHA1算法均需要发送和接收数据双方在数据传送之前就知道密匙生成算法,而HMAC与之不同的是需要生成一个密匙,发送方用此密匙对数据进行摘要处理(生成密文),接收方再利用此密匙对接收到的数据进行摘要处理,再判断生成的密文是否相同。
对于各种加密算法的选用:
由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。
在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。
如果在选定了加密算法后,那采用多少位的密钥呢?一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。



  • 常见的密码算法有哪三种
    答:常用的加密算法有哪些1、对称密钥加密SymmetricKeyAlgorithm又称为对称加密、私钥加密、共享密钥加密:这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单的相互推算的密钥,对称加密的速度一般都很快。2、对称加密算法对称加密算法是指加密和解密采用相同的密钥,是可逆的(即可解密)。AES加密算法是...
  • 计算机系统主要采用哪些加密算法?
    答:1、DES(DataEncryptionStandard):数据加密标准,速度较快,适用于加密大量数据的场合;3DES(TripleDES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;RC2和RC4:用变长密钥对大量数据进行加密,比DES快;2、IDEA(InternationalDataEncryptionAlgorithm)国际数据加密算法:使用128位密...
  • 什么是加密?6 种典型加密方法与示例
    答:2. 非对称加密 非对称加密,如RSA,以其公钥和私钥的互补性,为数据交换提供了一种更安全的解决方案。公钥可以公开,而私钥必须保密,确保信息的双向加密和解密安全。3. 哈希函数 哈希算法,如SHA-256,是数据完整性验证的守护者。一旦数据被哈希,就无法恢复原始信息,只能验证数据是否被篡改,常用于密...
  • 加密技术的种类?
    答:1. 私用密钥加密技术,也称为对称加密技术,其中知名的算法包括IBM公司开发的DES(数据加密标准)算法。2. DES的变体,三重DES,提供了比原始DES算法更高的安全性。3. 日本密码学家提出的随机化数据加密标准(RDES),是DES的一种改进版本。4. IDEA(国际数据加密算法)是由瑞士学者提出的,另一种...
  • 加密算法有几种
    答:应该选A吧 数据加密技术可分为三类:对称加密,非对称加密和不可逆加密 对称加密用的是一个共享密钥。非对称加密需要两密钥:分开密钥和私有密钥。这两个密钥是一对如果用公开密钥加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。
  • 常见的三种加密算法及区别
    答:比较: AES弥补了DES很多的不足,支持秘钥变长,分组变长,更加的安全,对内存要求非常低 简介: 非对称加密算法需要两个密钥:公开密钥和私有密钥。公钥与私钥是一对,如果用 公钥对数据进行加密,只有用对应的私钥才能解密。用私钥进行加密,只有对应的公钥才能进行解密 特点: 算法强度复杂...
  • 十大常见密码加密方式
    答:非对称加密算法是一种密钥的保密方法,它需要两个密钥来进行加密和解密,这两个密钥是公开密钥和私有密钥。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。非对称加密算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。四、数字签名 数字签名(又称公钥数字...
  • ...网络上传输为什么要加密?现在常用的数据加密算法主要有哪些?_百度...
    答:常见加密算法 1、DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合;2、3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高;3、RC2和RC4:对称算法,用变长密钥对大量数据进行加密,比 DES 快;4、IDEA(...
  • DES和AES算法的比较,各自优缺点有哪些?
    答:一、数据加密标准不同 1、DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。2、AES的基本要求是,采用对称分组密码体制,密钥的长度最少支持为128、192、256,分组...
  • 常见的加密算法、原理、优缺点、用途
    答:单向加密算法常用于提取数据指纹,验证数据的完整性、数字摘要、数字签名等等。1.发送者将明文通过单向加密算法加密生成定长的密文串,然后传递给接收方。2.接收方将用于比对验证的明文使用相同的单向加密算法进行加密,得出加密后的密文串。3.将之与发送者发送过来的密文串进行对比,若发送前和发送后的密文...