鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 网站安全 > 加密解密 > >

DES加密与解密

来源:互联网 作者:佚名 时间:2015-09-08 11:11
DES 加密 与 解密 随着互联网的发展,信息安全的重要性日益突出,我们需要各种各样的方法对我们的信息进行 加密 ,DES就是大量用于社会中的一种 加密 和 解密 方法。 DES (Data Entryption Standard) 是一种 对称密码算法(也就是 加密 密钥和 解密 密钥相

    DES加密解密



随着互联网的发展,信息安全的重要性日益突出,我们需要各种各样的方法对我们的信息进行加密,DES就是大量用于社会中的一种加密解密方法。

DES (Data Entryption Standard) 是一种 对称密码算法(也就是加密密钥和解密密钥相同的加密算法 )可以用于明文的加密解密 ,DES这种安全性还算可以加密算法多用于民间,以前常用于 ATM机等,应用非常广泛。

DES是以64bit为一个小组来处理所要加密的明文(好多用于加密的算法都是以小分组的方式处理数据 的,如MD5是512bit为一个大分组 ) 。用它进行数据加密大体上分为4个步骤:

1: 初始置换 函数IP。

2:子 密钥Ki的获取。

3:密码函数F

4:末置换函数IP-1。(是IP的逆置换 )

上面的方法涉中相应的置换均有相应的对照表可以实现,涉及到一些离散数学的知识,如果大家有兴趣搞懂它的话, 具体的方法详可以参考度娘百科,讲的很 详细。

java一个显著的好处就是将我们要用到的一些功能封装起来,DES加密就可以可以通过我们KeyGenerator、Cipher等类来实现。


Java代码 复制代码 收藏代码
  1. /**
  2. * 根据用户所提供的密钥转换为符合DES加密要求的密钥
  3. * @param str
  4. */
  5. public void createKey(String str){
  6. try {
  7. KeyGenerator generator = KeyGenerator.getInstance("DES");
  8. //SecureRandom可以提供安全的随机数(平时我们用的随机数是伪随机数)
  9. generator.init(new SecureRandom(str.getBytes()));
  10. key = generator.generateKey();//得到符合要求的密钥
  11. } catch (NoSuchAlgorithmException e) {//如果没有用户所指定的算法抛出异常
  12. e.printStackTrace();
  13. }
  14. }
/**
	 * 根据用户所提供的密钥转换为符合DES加密要求的密钥
	 * @param str
	 */
	public void createKey(String str){
		try {
			KeyGenerator generator = KeyGenerator.getInstance("DES");
			//SecureRandom可以提供安全的随机数(平时我们用的随机数是伪随机数)
			generator.init(new SecureRandom(str.getBytes()));
			key = generator.generateKey();//得到符合要求的密钥
		} catch (NoSuchAlgorithmException e) {//如果没有用户所指定的算法抛出异常
			e.printStackTrace();
		}
	}

我们平时用的随机数是有一个周期的可预测的伪随机数发生器产生的,既然可以预测就是不安全的,所以这里要用SecureRamdom来产生随机数。

Java代码 复制代码 收藏代码
  1. /**
  2. * 加密明文得到密文
  3. * @param str
  4. * @return 密文
  5. */
  6. public String desEncrypt(String str){
  7. Cipher cipher;
  8. try {
  9. cipher = Cipher.getInstance("DES");
  10. //用所得到的key初始化这个cipher
  11. cipher.init(Cipher.ENCRYPT_MODE, key);
  12. return bytetohex((cipher.doFinal(str.getBytes())));
  13. }
  14. catch(Exception e){
  15. e.printStackTrace();
  16. }
  17. finally{
  18. cipher = null;
  19. }
  20. return null;
  21. }
  22. /**
  23. * 解密密文输出明文
  24. * @param str
  25. * @return 明文
  26. */
  27. public String deDesEncrypt(String str){
  28. Cipher cipher;
  29. try{
  30. cipher = Cipher.getInstance("DES");
  31. cipher.init(Cipher.DECRYPT_MODE, key);
  32. ciphertext_1 = new String((cipher.doFinal(hextobyte(str.getBytes()))));
  33. }
  34. catch(Exception e){
  35. e.printStackTrace();
  36. }
  37. finally {
  38. cipher = null;
  39. }
  40. return ciphertext_1;
  41. }  
网友评论
<