0 0

如何保存密钥文件更安全5

下面是一个进行加密的工具类,加密类会产生一个密钥文件,密钥文件保存到了硬盘文件中,程序中要进行对数据的加解密操作。密钥文件保存在文件,别人也就可以读取密钥文件,获得加密数据的内容。有什么可以安全保存密钥文件的方式么?

 

public class EncryptUtil {	
	private static String keyPath = null;

	private static String getKeyPath() {
		keyPath = "c:\\yhb.des";
		return keyPath;
	}
	
	/**
	 * 对称加密-产生密钥<br/>
	 */
	public static void generatorKey() {
		SecretKey key = null;
		try {
			// 指定算法,这里为DES;如果想用Blowfish算法,则用getInstance("Blowfish")
			// BouncyCastle基本上支持所有通用标准算法
			KeyGenerator keygen = KeyGenerator.getInstance("DES");
			// 指定密钥长度,长度越高,加密强度越大
			keygen.init(56);
			// 产生密钥
			key = keygen.generateKey();
			// 构造输出文件,这里的目录是动态的,根据用户名称来构造目录
			ObjectOutputStream keyFile = new ObjectOutputStream(
					new FileOutputStream(getKeyPath()));
			keyFile.writeObject(key);
			keyFile.close();
		} catch (NoSuchAlgorithmException e5) {
			e5.printStackTrace();	
			System.exit(0);
		} catch (IOException e4) {
			e4.printStackTrace();
			System.exit(0);
		}
	}
	
	/**
	 * 对称加密-读取密钥.<br/>
	 */
	private static SecretKey getSecretKey() {
		// 从密钥文件中读密钥
		SecretKey key = null;
		try {
			ObjectInputStream keyFile = new ObjectInputStream(
					new FileInputStream(getKeyPath()));
			key = (SecretKey) keyFile.readObject();
			keyFile.close();
		} catch (FileNotFoundException ey1) {
			e1.printStackTrace();
			System.exit(0);
		} catch (Exception ey2) {
			e2.printStackTrace();
		}
		return key;
	}

	/**
	 * 加密文本信息.<br/>
	 */
	public static String encrypt(String encryptStr) {
		SecretKey key = getSecretKey();
		Cipher cipher = null;
		try {
			// 设置算法,应该与加密时的设置一样
			cipher = Cipher.getInstance("DES");
			// 设置解密模式
			cipher.init(Cipher.ENCRYPT_MODE, key);
		} catch (Exception ey3) {
			ey3.printStackTrace();
		}
		byte[] data = null;
		try {
			data = cipher.doFinal(encryptStr.getBytes());
		} catch (IllegalBlockSizeException e) {
			e.printStackTrace();
		} catch (BadPaddingException e) {
			e.printStackTrace();
		}
		encryptStr = Base64.encodeBase64String(data);
		return encryptStr;
	}
	
	/**
	 * 解密文本信息.<br/>
	 */
	public static String decrypt(String decryptStr) {
		SecretKey key = getSecretKey();
		// 用key产生Cipher
		Cipher cipher = null;
		try {
			// 设置算法,应该与加密时的设置一样
			cipher = Cipher.getInstance("DES");
			// 设置解密模式
			cipher.init(Cipher.DECRYPT_MODE, key);
		} catch (Exception ey3) {
			ey3.printStackTrace();
			System.exit(0);
		}
		byte[] data = Base64.decodeBase64(decryptStr);
		try {
			data = cipher.doFinal(data);
		} catch (IllegalBlockSizeException e) {
			e.printStackTrace();
		} catch (BadPaddingException e) {
			e.printStackTrace();
		}
		decryptStr = new String(data);
		return decryptStr;
	}	
}

 

2012年8月15日 16:25

1个答案 按时间排序 按投票排序

0 0

采纳的答案

为什么不用RSA 那样更安全.
换个角度
  你的DES密钥文件 存储在服务器端 应该很安全了.

2012年8月15日 16:48

相关推荐

    Steam的st文件密钥

    了解和正确处理这些密钥文件对于玩家和开发者都至关重要。同时,lua文件作为承载密钥信息的载体,其解读和管理也是理解Steam平台运作机制的关键一步。在实际操作中,务必遵循官方指导,确保游戏体验的安全和顺畅。

    Java_keytool密钥存储文件

    将密钥存储文件配置到启用SSL的服务器上,实现SSL/TLS加密协议的安全连接。 七、查看密钥存储文件 可以使用Java_keytool工具查看密钥存储文件的内容。命令为: keytool -list -keystore keystore.jks 其中,-...

    如何产生和保存密钥,选择DESede算法

    本文将深入探讨如何使用DESede算法生成和保存密钥,以及如何确保私钥的安全性。 DESede算法结合了三个DES密钥,提供更强大的安全性,其有效密钥长度可以是112位或168位。112位是通过使用两个不同的56位DES密钥实现...

    卡巴斯基密钥文件获取软件

    然而,"卡巴斯基密钥文件获取软件"声称能帮助用户免费获取卡巴斯基的密钥,从而实现永久免费使用。 在网络安全领域,免费获取授权密钥的行为存在一定的风险。首先,非法获取和使用他人软件的密钥可能违反版权法,...

    c# RSA读取密钥文件pfx cer 签名验签加密解密工具类 1 包含java形式密钥转换成c# c# 形式密钥转换成java

    本项目涉及到C#语言实现的RSA工具类,包括读取不同格式的密钥文件(如PFX和CER)、进行签名验证、解密以及在C#和Java之间互转密钥。以下将详细阐述这些知识点。 1. **RSA算法**:RSA是一种基于大数因子分解困难性的...

    不可破解的文件加密程序

     我们看到,密文和密钥文件的密文都是乱码,如果不加密密钥文件你需要用安全的地方来保存密钥文件,但是如果有安全的地方保存文件你为何不直接保存原文件算了,何必多此一举,而加密后你只要记住密码就可以了。...

    基于Qt的密钥生成工具、密钥使用示例

    在IT领域,尤其是在软件开发中,安全性和隐私保护是至关重要的。Qt是一个流行的跨平台应用程序开发框架,广泛用于创建桌面、移动以及...同时,这个工具也可以作为一个起点,进一步扩展到更复杂的加密算法和安全协议。

    密钥安全管理办法 密钥分发管理

    《密钥安全管理办法 密钥分发管理》的文件详细阐述了如何管理和保障密钥的安全,这在IT行业中至关重要,因为密钥是信息安全的核心。密钥管理涉及密钥的生成、分发、传输、保管、删除、销毁以及泄漏处理等多个环节,...

    yuzu最新固件-密钥keys

    同时,正确安装和配置密钥文件需要一定的技术知识,包括理解如何导入和启用这些密钥,以及如何处理可能出现的任何错误或警告。 总的来说,"yuzu最新固件-密钥keys"的组合涉及到保持模拟器最新状态、增强游戏兼容性...

    实现一对密钥对整个项目所有加密解密文件都适用的方法

    throw new EprasRuntimeException("读取密钥文件失败.", e); } return kp; } } ``` #### 文件加密 有了密钥之后,我们就可以利用这些密钥来进行文件的加密处理。下面的代码展示了如何使用RSA算法进行文件加密...

    halcon 密钥

    同时,保持密钥文件的安全性也很重要,防止未经授权的访问和使用。 总结来说,HALCON的密钥管理是确保软件合法使用和功能发挥的关键环节。正确使用和支持密钥文件,不仅可以避免法律风险,也能确保用户获得最佳的...

    NET使用OpenSSL生成的pem密钥文件

    使用OpenSSL生成的pem密钥文件可以提供更好的安全性,因为OpenSSL可以生成更强的密钥。同时,使用pem格式的密钥文件可以使得密钥的存储和传输更方便。 七、结论 在.NET中,可以使用OpenSSL生成的pem密钥文件来实现...

    Go-Bletchley是一个基于公共密钥的文件交换的简单命令行应用程序

    Go-Bletchley是一个专为公共密钥加密技术设计的简单命令行工具,它使得文件交换变得更加安全且便捷。在IT行业中,理解并掌握公钥加密机制是信息安全领域的重要一环,尤其是对于需要处理敏感数据的开发者和系统管理员...

    Python-CERTKeyfinder用于查找和分析私人和公共密钥文件的工具包括对AndroidAPK文件的支持

    Python CERT Keyfinder是一款强大的安全工具,主要功能是搜索和分析计算机文件系统以及Android APK应用程序中的私有和公共密钥文件。这个工具的诞生得益于美国国土安全部(DHS)的赞助,旨在提高网络安全性和隐私...

    一种基于文件属性的密钥加密方法

    本发明公开了一种基于文件属性的密钥加密方法,包括:接收用户文件,根据用户文件生成属性集合、访问结构树、主密钥和公钥,随机生成对称密钥,使用对称密钥和对称加密算法加密用户文件,以得到数据密文,使用公钥和...

    vnc + 密钥

    标题中的“vnc + 密钥”指的是在使用VNC时,为了确保连接的安全性和隐私性,可能需要使用特定的注册密钥或许可证密钥。这个密钥通常由VNC软件的提供商提供,用于验证用户的身份,防止未经授权的访问。 在描述中提到...

    密钥安全研究进展.pdf

    但是,根据文件标题和描述中提到的“密钥安全研究进展”、“密码安全”以及标签“数据安全 安全开发 逻辑漏洞 安全事件 URL跳转”,我们可以推断文件中可能包含以下方面的知识点: 1. 密钥安全的基本概念:密钥是...

    信息安全概论课件 第六章 密码应用与密钥管理.pdf

    - 密钥加密密钥(KeyEncryptingKey):用于加密会话密钥或文件密钥。 - 主机主密钥(HostMasterKey):对密钥加密密钥进行加密的密钥,存于主机中。 - 在公钥体制中,还包含公开密钥、私钥和签名密钥等。 2. ...

Global site tag (gtag.js) - Google Analytics