`

密码加密 - DES 类

阅读更多
private static final byte[] PASSWORD_CRYPT_KEY = new byte[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' };

	private final static String DES = "DES";

	public String encrypt(String pureStr) {
		if (pureStr == null || pureStr.length() == 0) {
			return null;
		}

		byte[] bytes = encrypt(pureStr.getBytes(), PASSWORD_CRYPT_KEY);
		if (bytes == null) {
			return null;
		}

		return encodeBase64(bytes);
	}

	/**
	 * 加密 
	 * @param src - 数据源
	 * @param key - 密钥,长度必须是8的倍数
	 * @return 返回加密后的数据
	 * @throws Exception
	 *             - 异常处理
	 */
	private static byte[] encrypt(byte[] src, byte[] key) {
		try {
			// DES算法要求有一个可信任的随机数源
			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);
			// 现在,获取数据并加密
			// 正式执行加密操作

			byte[] bytes = cipher.doFinal(src);

			return bytes;
		} catch (Exception ex) {
			return null;
		}
	}

	private final static String encodeBase64(byte[] bytes) {
		if (bytes == null || bytes.length == 0) {
			return "";
		}
		BASE64Encoder encoder = new BASE64Encoder();
		return encoder.encode(bytes);
	}
分享到:
评论

相关推荐

    S-DES密码加密解密

    S-DES加密解密

    S-DES 原理教程

    ### S-DES (Simplified Data Encryption Standard) 原理详解 ...通过对S-DES的学习,不仅可以掌握加密算法的基本原理,还可以了解如何设计和分析密码系统。对于初学者来说,这是一条通向更复杂加密技术的良好路径。

    常用MD5加密算法和3-DES加密算法java实现

    在Java中,可以使用`javax.crypto.Cipher`类来实现3-DES加密。下面是一个简单的示例: ```java import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax....

    Security_04_密码技术-现代密码学-DES-智能信息安全.zip

    "Security_04_密码技术-现代密码学-DES-智能信息安全.zip"这个压缩包文件显然聚焦于密码学的一个关键分支——现代密码学,特别是数据加密标准(DES)以及其在智能信息安全中的应用。以下是关于这个主题的详细解读。 ...

    密码技术-现代密码学-DES

    对称密钥密码,如标题中提到的DES(Data Encryption Standard),是指加密和解密过程使用相同密钥的算法。DES是由IBM公司在1970年代初开发的,其设计者Horst Feistel领导的团队提出了著名的Feistel结构,这是一种...

    密码学课设--DES加密

    总的来说,"密码学课设--DES加密"项目是一个深入学习和实践密码学原理的好机会,它涵盖了对称加密的基本概念、DES算法的细节、以及如何在实际编程环境中应用这些理论知识。通过这个项目,学生不仅可以掌握DES加密的...

    现代密码学-DES加密算法实验报告.doc

    现代密码学-DES加密算法实验报告 现代密码学是研究秘密通信的原理和破译秘密信息的方法的一门学科。密码学的根本技术就是对数据进行一组可逆的数学变换,使未授权者不能理解它的真实含义。密码学包括密码编码学和...

    s-des和des算法实现

    本文将深入探讨两种常见的对称加密算法:S-DES(简化版DES)和DES(数据加密标准),并介绍如何使用C++来实现这两种算法以对文件进行加解密操作。 首先,S-DES是DES的一个简化版本,用于教学目的,它保留了DES的...

    s-des.rar_s-des

    **S-DES(简化版DES)算法详解** S-DES,即简化版的数据加密标准(Data Encryption Standard),是DES加密算法的一个...学习S-DES有助于初学者逐步掌握密码学的基础知识,并为进一步研究高级加密算法如AES打下基础。

    DES的简化版本,S-DES,密码学资料

    S-DES使用小数位的密码块和密钥,使学生可以更好地理解加密过程。 S-DES的结构是一个块加密算法,如图O.1所示。在加密站点,S-DES将8位明文变换为8位密文;在解密站点,S-DES将8位密文变换为8位明文。加密和解密都...

    密码学课程设计---des加密

    文中介绍了des的加密和解密,将整个加密的头文件和主文件放到同一个cpp中了,大家可以下载之后直接使用。

    GS-DES大天电子文档安全管理系统(大天加密软件).docx

    GS-DES大天电子文档安全管理系统(大天加密软件).docx

    分组密码加密之DES和3DES加密

    在密码学领域,分组密码加密是用于保护数据安全的重要技术。其中,DES(Data Encryption Standard)和3DES(Triple DES)是两个经典的分组密码算法。本资源提供了这两种加密算法的源代码实现,便于理解和学习。 DES...

    简化版 des (s-des)

    S-DES,即简化版数据加密标准(Simplified Data Encryption Standard),是由Edward Schaefer教授在Santa Clara大学设计的一种教学用途的加密算法,其目的是为了简化原始的DES算法,便于学习和理解。DES是一种广泛...

    flex-php-des加密解密包

    DES是一种广泛使用的对称加密算法,常用于保护敏感数据,如用户密码、信用卡信息等。在PHP中实现DES加密解密功能,可以确保在Web应用中的数据传输安全,防止数据被非法获取或篡改。 首先,我们来了解DES算法的基本...

    数据加解密基础之对称加密 - DES & TDES( ECB or CBC )

    本篇主要介绍两种常见的对称加密算法:DES(Data Encryption Standard)和TDES(Triple DES),以及它们在ECB(Electronic Codebook)和CBC(Cipher Block Chaining)模式下的工作原理。 DES是一种古老的对称加密...

    s-des算法分析及实现.rar_DES 密码_des_des算法 报告_s-des_迭代

    提出了用C语言实现数据加密标准DES算法,通过循环或迭代,将简单的基本运算(例如左移、右移、模2加法等)和变换(选择函数、置换函数)构造成数据流的非线性变换(加密变换或解密变换),从而实现对计算机数据进行密码...

    C语言simple-des 密码技术实验

    **C语言Simple-DES密码技术实验** 在计算机科学领域,数据加密是保护信息安全的重要手段,而DES(Data Encryption Standard)是一种广泛使用的对称密钥加密算法。本实验以C语言实现了一个简化的版本——Simple-DES...

    现代密码学~DES加密算法实验报告.doc

    现代密码学~DES 加密算法实验报告 现代密码学是研究秘密通信的原理和破译秘密信息的方法的一门学科。密码学的根本技术就是对数据进行一组可逆的数学变换,使未授权者不能理解它的真实含义。密码学包括密码编码学和...

Global site tag (gtag.js) - Google Analytics