常用的加密算法有哪些?
使用分组密码算法数字签名常用的加密标准有:DES,Tripl-DES,RC2,RC4,CAST等。
使用公钥密码算法进行数字签名通用的加密标准有: RSA,DSA等。
数字签名是指使用密码算法对待发的数据(报文、票证等)进行加密处理,生成一段信息,附着在原文上一起发送,这段信息类似现实中的签名或印章,接收方对其进行验证,判断原文真伪。
Hash算法数字签字通用的加密标准有: SHA-1,MD5等。
自定义算法:X.509数字证书,XML数字签名等。
用数据库做的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; } }
对称密钥加密
对称密钥加密 Symmetric Key Algorithm 又称为对称加密、私钥加密、共享密钥加密:这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单的相互推算的密钥,对称加密的速度一般都很快。
分组密码
DES、3DES
AES
- 合并(AddRoundKey):矩阵中的每个字节与该回合密钥做XOR异或运算,其中回合密钥由主密钥通过Rijndael密钥生成方案生成,这个密钥大小跟原矩阵一致。
- 替换(SubBytes):矩阵中的每个字节通过一个8位查找表对应的特定字节所替换。这里的8位查找表为S-box(Substitution-box, 置换盒),用来模糊密钥与密文之间的关系,实现输入输出的非线性特征。 行混淆(ShiftRows):矩阵中的每一行的各个字节循环向左方位移,位移量随行数递增。列混淆(MixColumns):每一列的四个字节通过线性变换互相结合,即与一个固定的多项式做乘法。
安全性
RSA
ECC
数字签名
分组密码 Block Cipher 又称为“分块加密”或“块加密”,将明文分成多个等长的模块,使用确定的算法和对称密钥对每组分别加密解密。这也就意味着分组密码的一个优点在于可以实现同步加密,因为各分组间可以相对独立。
与此相对应的是流密码:利用密钥由密钥流发生器产生密钥流,对明文串进行加密。与分组密码的不同之处在于加密输出的结果不仅与单独明文相关,而是与一组明文相关。
数据加密标准 DES Data Encryption Standard 是由IBM在美国国家安全局NSA授权下研制的一种使用56位密钥的分组密码算法,并于1977年被美国国家标准局NBS公布成为美国商用加密标准。但是因为DES固定的密钥长度,渐渐不再符合在开放式网络中的安全要求,已经于1998年被移出商用加密标准,被更安全的AES标准替代。
DES使用的Feistel Network网络属于对称的密码结构,对信息的加密和解密的过程极为相似或趋同,使得相应的编码量和线路传输的要求也减半。
DES是块加密算法,将消息分成64位,即16个十六进制数为一组进行加密,加密后返回相同大小的密码块,这样,从数学上来说,64位0或1组合,就有2^64种可能排列。DES密钥的长度同样为64位,但在加密算法中,每逢第8位,相应位会被用于奇偶校验而被算法丢弃,所以DES的密钥强度实为56位。
3DES Triple DES,使用不同Key重复三次DES加密,加密强度更高,当然速度也就相应的降低。
高级加密标准 AES Advanced Encryption Standard 为新一代数据加密标准,速度快,安全级别高。由美国国家标准技术研究所NIST选取Rijndael于2000年成为新一代的数据加密标准。
AES的区块长度固定为128位,密钥长度可以是128位、192位或256位。AES算法基于Substitution Permutation Network代换置列网络,将明文块和密钥块作为输入,并通过交错的若干轮代换"Substitution"和置换"Permutation"操作产生密文块。
AES加密过程是在一个4*4的字节矩阵(或称为体State)上运作,初始值为一个明文区块,其中一个元素大小就是明文区块中的一个Byte,加密时,基本上各轮加密循环均包含这四个步骤:
已知的针对AES唯一的成功攻击是旁道攻击,2005年时使用缓存时序攻击法,破解了一个装载OpenSSL AES加密系统的客户服务器。
针对区块加密系统最常见的方式,是通过对加密循环次数较少的版本尝试攻击,然后改进算法后继续攻击高级版本,目前这个破解方法还不太实用。
另外由于AES的数据结构具有井然有序的代数结构,有一个担心就是相关的代数攻击,目前基于此的有效攻击方法也暂时没有出现。
非对称密钥加密
非对称密钥加密 Asymmetric Key Cryptography 也可称为 Public Key Cryptography 公开密钥加密:需要两个密钥,分为公钥和私钥,一个用作加密而另外一个只能用于解密,而加密的密钥并不能用来解密。
根据此特性,除了加解密的应用外,还可以确保数字签名的功能:某用户用私钥加密明文,任何人都可以用该用户的公钥解密密文,以此判定身份。
对称密钥需要一个安全的渠道可以交换共用的密钥,而非对称密钥可以将加密公钥公开发布;不过公钥加密在计算上相当复杂,性能远比不上对称加密,所以一般会利用公钥加密来交换对称密钥,然后依靠对称密钥来传输具体的信息。
RSA是由三个人的名字组成 Ron Rivest、Adi Shamir、Leonard Adleman于1977年在MIT提出,并于1987年公布,是目前最常用的公钥加密算法。
RSA算法的核心是极大整数的因式分解,理论基础在于由两个大质数算出乘积很容易,但是要从一个极大整数因式分解得出两个质数却很难。
ECC即 Elliptic Curve Cryptography 椭圆曲线密码学,是基于椭圆曲线数学建立公开密钥加密的算法。ECC的主要优势是在提供相当的安全等级情况下,密钥长度更小。
ECC的原理是根据有限域上的椭圆曲线上的点群中的离散对数问题ECDLP,而ECDLP是比因式分解问题更难的问题,是指数级的难度。而ECDLP定义为:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q 的情况下求出小于p的正整数k。可以证明由k和P计算Q比较容易,而由Q和P计算k则比较困难。
数字签名 Digital Signature 又称公钥数字签名是一种用来确保数字消息或文档真实性的数学方案。一个有效的数字签名需要给接收者充足的理由来信任消息的可靠来源,而发送者也无法否认这个签名,并且这个消息在传输过程中确保没有发生变动。
数字签名的原理在于利用公钥加密技术,签名者将消息用私钥加密,然后公布公钥,验证者就使用这个公钥将加密信息解密并对比消息。一般而言,会使用消息的散列值来作为签名对象。
一。摘要算法
1》MD5算法(Message Digest Algorithm 5) 可以保证数据传输完整性和一致性 摘要后长度为16字节 摘要信息中不包含原文信息
所有加密结果不可逆(无法解密) 一般在传送文件时 对源文件进行md5 hash 传送到对方后 检测hash值是否相等 如果相等文件传输正确
如果不相等 说明文件被篡改(加入木马)或者未传送完成
其他MD算法 MD2(16字节)
public static void main(String[] args) throws NoSuchAlgorithmException {
MessageDigest md=MessageDigest.getInstance("MD5") ;
String code="hello";
byte[] bt=md.digest(code.getBytes());
System.out.println(bt.length);
对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。
1、常用密钥算法
密钥算法用来对敏感数据、摘要、签名等信息进行加密,常用的密钥算法包括:
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;
RC2和RC4:用变长密钥对大量数据进行加密,比DES快;
RSA:由RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件快的长度也是可变的;
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的DSS(数字签名标准);
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前AES标准的一个实现是 Rijndael算法;
BLOWFISH:它使用变长的密钥,长度可达448位,运行速度很快;
其它算法:如ElGamal、Deffie-Hellman、新型椭圆曲线算法ECC等。
2、单向散列算法
单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:
MD5(Message Digest Algorithm5):是RSA数据安全公司开发的一种单向散列算法,MD5被广泛使用,可以用来把不同长度的数据块进行暗码运算成一个128位的数值;
SHA(Secure Hash Algorithm):这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值;
MAC(Message Authentication Code):消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。HMAC(用于消息认证的密钥散列法)就是这种函数的一个例子;
CRC(Cyclic Redundancy Check):循环冗余校验码,CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测地一种很好的手段(CRC并不是严格意义上的散列算法,但它的作用与散列算法大致相同,所以归于此类)。
有哪些常见的加密算法被广泛应用?
1、对称加密算法包括DES、3DES、AES等。这些算法在数据传输安全、实现身份认证、保证通信隐私等方面发挥关键作用。2、非对称加密算法(公钥\/私钥加密)包含RSA、ECC、DH等。它们用于数字证书生成与验证,确保通信安全,防止数据被未授权访问。3、随着技术发展和安全需求的变化,新的加密算法如ChaCha20、Salsa2...
常见的密码算法有哪三种
4. 对称加密算法:对称加密算法用来对敏感数据等信息进行加密,常用的算法包括DES、AES等。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单的相互推算的密钥。5. 对称加密的优点:算法公开、计算量小、加密速度和效率高。但缺点包括密钥管理困难等。6. AES加密算法:AES加密算法是密码学中的...
十大常见密码加密方式
1、RSA算法密码RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。2、比如用户设置的密码是“123456”,直接将“123456”保存在数据库中,这种是最简单的保存方式,也是...
有哪些加密算法
加密算法有很多种,主要包括对称加密算法、非对称加密算法以及哈希算法等。对称加密算法 对称加密算法是一种加密和解密使用相同密钥的算法。常见的对称加密算法包括AES(高级加密标准)、DES(数据加密标准)以及它们的变体如3DES、AES-256等。这类算法的特点是加密速度快,适用于大量数据的加密和解密。但由于...
加密算法有几种
加密算法有几种 加密算法有多种类型,包括但不限于以下几种:对称加密算法:使用相同的密钥进行加密和解密,如AES、DES等。非对称加密算法:使用不同的密钥进行加密和解密,如RSA、ECC等。散列函数:用于生成固定长度的哈希值,如MD5、SHA-1等。消息认证码(MAC):用于验证消息的完整性和认证消息的发送...
常用的加密算法有哪些?
7. 非对称密钥加密,也称为公开密钥加密,使用一对密钥,公钥用于加密,私钥用于解密。这种加密方式可以实现数字签名和密钥交换。8. RSA,一种非对称密钥加密算法,基于大整数因式分解的难解性。它是目前最常用的公钥加密算法之一。9. ECC,椭圆曲线密码学,是一种基于椭圆曲线数学的公钥加密算法。它具有...
加密文件的常用算法有哪些
常见的哈希算法有MD5、SHA-1、SHA-256等。4.混沌加密算法混沌加密算法是一种基于混沌理论的加密方式。混沌理论是指一种非线性、非周期、随机的动态系统,具有高度不可预测性。混沌加密算法的优点在于其所用的加密密钥具有不可预测性和高度随机性,因此破解难度很大。常见的混沌加密算法有Logistic映射、Henon...
对称加密算法的加密算法主要有哪些
1、主要有DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。2、DES算法:数据加密标准,速度较快,适用于加密大量数据的场合。3DES算法:是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。AES算法:高级加密...
银行的加密算法有几种、有哪几种、主要详情是什么
银行使用的加密算法主要包括六种:DES、AES、MD5、RSA、双钥加密和非对称加密。DES算法是一种经典的对称加密算法,其数据分组长度为64位,有效密钥长度为56位,由IBM公司开发并在70年代被美国政府采用。DES算法适用于需要快速加密和解密的应用场景。AES算法是1997年由美国国家标准和技术研究所(NIST)征集...
现在密码学采用的算法主要有什么
是可逆的(即可解密)。AES加密算法是密码学中的高级加密标准,采用的是对称分组密码体制,密钥长度的最少支持为128。5、主要包括:对称密码、公钥密码、杂凑算法、随机数生成。在对称加密算法中,加密使用的密钥和解密使用的密钥是相同的,加密和解密都是使用同一个密钥,不区分公钥和私钥。