根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)
对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。
非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。
1 对称加密算法
对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:
DES(Data Encryption Standard): 数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES): 是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard): 高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
2 对称算法
常见的非对称加密算法如下:
RSA: 由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
DSA(Digital Signature Algorithm): 数字签名算法,是一种标准的 DSS(数字签名标准);
ECC(Elliptic Curves Cryptography): 椭圆曲线密码编码学。
3 加密算法的选择
前面简单介绍了各种对称和非对称加密算法,那我们在实际使用的过程中究竟该使用哪一种比较好呢?
我们应该根据自己的使用特点来确定:
由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。
对称加密算法不能实现签名,因此签名只能非对称算法。
由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。
在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。
如果在选定了加密算法后,那采用多少位的密钥呢?一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。
分享到:
相关推荐
Java实现文件的RSA和DES加密算法.doc
Java加密组件实现DES、RSA和SHA加密算法,很好的例子。
分别用C#、Java实现的RSA和DES加解密算法,包含demo源码,经实际项目验证。
Java实现文件的RSA和DES加密算法.doc 对rsa和des加密算法的说明和实现·
基于java的开发源码-用Java加密类实现DES、RSA及SHA的加密算法.zip 基于java的开发源码-用Java加密类实现DES、RSA及SHA的加密算法.zip 基于java的开发源码-用Java加密类实现DES、RSA及SHA的加密算法.zip 基于java的...
采用了分析与比较的方法,首先研究了目前常用的对称加密算法DES以及非对称加密算法RSA,然后分析比较了它们的优缺点,进而综合安全性和效率设计出适合于在实际工程中应用的RSA、DES混合加密算法,最后结合实际JAVA...
基于Java的实例源码-用Java加密类实现DES、RSA及SHA的加密算法.zip
Java加密类演示DES、RSA及SHA加密算法,可对文件和输入流进行加密处理。 AsymmetryEncrypt.java:非对称加密算法的上层接口,提供加/解密、数字签名/验证操作所需的方法 * 加密/解密操作(公钥加密,私钥解密...
用Java加密类实现DES、RSA及SHA的加密算法
JAVA实现RSA加密和3DES加解密,。
适合初学者的rsa算法java源码及des源码,开发环境eclipse3.4
基于DES和RSA的加密聊天工具,共包含4个文件: chat.cpp、des.h、rsa.h、makefile。 编译:命令行模式下,切换到代码所在目录,输入make后回车即可。 运行:命令行模式下输入 ./chat,然后选择程序执行角色(客户端或...
JAVA源码用Java加密类实现DES、RSA及SHA的加密算法提取方式是百度网盘分享地址
基于java的用Java加密类实现DES、RSA及SHA的加密算法.zip
基于Java的用Java加密类实现DES、RSA及SHA的加密算法.zip
java源码:用Java加密类实现DES、RSA及SHA的加密算法.rar
用Java加密类实现DES、RSA及SHA的加密算法.7z
这是我的密码学项目,比较简单,实现了DES,AES,RSA。拿java做了简单的可视化界面。代码也是拿java实现的。没有调用java的security包。注释不怎么样。但是可以直接运行。略微有点小bug。