Java密码学结构设计遵循两个原则:
1) 算法的独立性和可靠性。
2) 实现的独立性和相互作用性。
算法的独立性是通过定义密码服务类来获得。用户只需了解密码算法的概念,而不用去关心如何实现这些概念。实现的独立性和相互作用性通过密码服务提供器来实现。密码服务提供器是实现一个或多个密码服务的一个或多个程序包。软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用户可以安装不同的提供器。安装和配置提供器,可将包含提供器的ZIP和JAR文件放在CLASSPATH下,再编辑Java安全属性文件来设置定义一个提供器。
DES算法及如何利用DES算法加密和解密类文件的步骤:
DES算法简介
DES(Data Encryption Standard)是发明最早的最广泛使用的分组对称加密算法。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
package com.afreon.util; import java.io.IOException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class DesUtil { private final static String DES = "DES"; public static void main(String[] args) throws Exception { String data = "123 456"; String key = "wang!@#$%"; System.err.println(encrypt(data, key)); System.err.println(decrypt(encrypt(data, key), key)); } /** * Description 根据键值进行加密 * @param data * @param key 加密键byte数组 * @return * @throws Exception */ public static String encrypt(String data, String key) throws Exception { byte[] bt = encrypt(data.getBytes(), key.getBytes()); String strs = new BASE64Encoder().encode(bt); return strs; } /** * Description 根据键值进行解密 * @param data * @param key 加密键byte数组 * @return * @throws IOException * @throws Exception */ public static String decrypt(String data, String key) throws IOException, Exception { if (data == null) return null; BASE64Decoder decoder = new BASE64Decoder(); byte[] buf = decoder.decodeBuffer(data); byte[] bt = decrypt(buf,key.getBytes()); return new String(bt); } /** * Description 根据键值进行加密 * @param data * @param key 加密键byte数组 * @return * @throws Exception */ private static byte[] encrypt(byte[] data, byte[] key) throws Exception { // 生成一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 从原始密钥数据创建DESKeySpec对象 DESKeySpec dks = new DESKeySpec(key); // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); SecretKey securekey = keyFactory.generateSecret(dks); // Cipher对象实际完成加密操作 Cipher cipher = Cipher.getInstance(DES); // 用密钥初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, securekey, sr); return cipher.doFinal(data); } /** * Description 根据键值进行解密 * @param data * @param key 加密键byte数组 * @return * @throws Exception */ private static byte[] decrypt(byte[] data, byte[] key) throws Exception { // 生成一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 从原始密钥数据创建DESKeySpec对象 DESKeySpec dks = new DESKeySpec(key); // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); SecretKey securekey = keyFactory.generateSecret(dks); // Cipher对象实际完成解密操作 Cipher cipher = Cipher.getInstance(DES); // 用密钥初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, securekey, sr); return cipher.doFinal(data); } } |
转载,能运行~~ |
相关推荐
java版Des加密解密源码 DES加密解密程序的主程序在 FileDES类中 运行时使用的例子是本目录下的111.doc文件,运行后自动生成222.doc文件和333.doc文件。 其中111.doc文件加密后的文件是222.doc文件,222.doc文件...
Java实现des加密解密算法,des加密解密算法
JAVA版Des 加密 解密 源码 JAVA版Des加密解密源码
Des加密解密源码
带界面的DES加密解密java源码,可以实现加密解密和显示每一步的过程。
Des加密解密源码JAVA版 Des加密解密源码JAVA版
java DES加密解密源码,详细讲述了DES加密解密算法的实现,从原理出发,适合入门。
DES加密解密程序的C源码.喜欢就下~~~
DES 加密 解密源码 java版 可运行 很适用 注释清晰
C#DES标准ECB加密解密示例源码,根据标准的C改的源码,与网上所搜索到的完全不一样,可以支持中文为密钥的加密,也可以支持为中文字符串的加密,如,密钥为:替天行道,明文为:来自替天行道的C#DES标准ECB加密解密...
DES算法加密解密C++源码及程序(完整的工程文件),内容绝对完整,VC++6.0完美打开,控制台应用程序,而且可以计算加密解密时间的哦
Des加密解密C#源码,很实用 byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8)); byte[] rgbIV = Encoding.ASCII.GetBytes(kesVector); byte[] inputByteArray = Encoding.UTF8.GetBytes...
源码 c#版字符串DES加密解密工具源码
java代码-使用java解决DES加密解密的源代码 ——学习参考资料:仅用于个人学习使用!
Des加密解密源码 JAVA版
C#实现的DES加密解密工具
DES加密解密,还有反序列化,把二维数组转化成DataSet,多指教
3DES 加密解密算法源码,5.09 DES 3DES