`

Java自定义序列化进行加密处理

    博客分类:
  • JAVA
阅读更多
private static final long serialVersionUID = 1L;

	private String password = "pass";

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	private void writeObject(ObjectOutputStream out) {
		try {
			PutField putFields = out.putFields();
			System.out.println("原密码:" + password);
			password = "encryption";//模拟加密
			putFields.put("password", password);
			System.out.println("加密后的密码" + password);
			out.writeFields();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	private void readObject(ObjectInputStream in) {
		try {
			GetField readFields = in.readFields();
			Object object = readFields.get("password", "");
			System.out.println("要解密的字符串:" + object.toString());
			password = "pass";//模拟解密,需要获得本地的密钥
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

	}

	public static void main(String[] args) {
		try {
			ObjectOutputStream out = new ObjectOutputStream(
					new FileOutputStream("result.obj"));
			out.writeObject(new Test());
			out.close();

			ObjectInputStream oin = new ObjectInputStream(new FileInputStream(
					"result.obj"));
			Test t = (Test) oin.readObject();
			System.out.println("解密后的字符串:" + t.getPassword());
			oin.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}


分享到:
评论

相关推荐

    Java_序列化的高级认识

    为了避免循环引用导致的无限递归,Java序列化机制采用了一种称为“写替换”(writeReplace)的技术,允许用户自定义序列化的过程,以满足特定的业务需求或性能优化。 总之,Java序列化不仅仅是一种简单的对象持久化...

    Java编程实现同步序列密码的加密解密系统

    总结来说,Java编程实现的同步序列密码加密解密系统是一种高效且灵活的解决方案,适用于需要实时加密大量数据的场景。理解其工作原理和实现细节,对于提升软件的安全性和合规性至关重要。在开发过程中,应始终关注...

    Java序列化与反序列化<转>

    5. **自定义序列化和反序列化**:通过实现`writeObject()`和`readObject()`方法,可以控制序列化和反序列化的行为,例如处理循环引用或者只序列化部分字段。 6. **替代方案**:除了Java内置的序列化机制,还有许多...

    JAVA_对象序列化

    此外,还可以自定义序列化和反序列化的行为,通过重写`writeObject()`和`readObject()`方法。这样可以处理一些特殊的情况,比如加密敏感数据或忽略某些字段。 最后,序列化可能引发的安全问题也不容忽视。恶意用户...

    java.io.Serializable序列化问题

    使用 `Externalizable` 接口的主要优点在于可以更精确地控制序列化和反序列化过程,这对于需要自定义序列化逻辑的对象非常有用。 #### 六、序列化中的注意事项 - **`transient` 关键字**:使用 `transient` 可以...

    c AES, c++ AES, java AES, 互通, 加密解密

    2. 密钥和IV的序列化:将它们转换为字节数组并保存,确保字节顺序一致。 3. 加密:在C/C++和Java中实现AES加密算法,处理输入的明文数据。 4. 解密:在另一端实现AES解密算法,还原加密后的数据。 5. 检验:解密后,...

    hessian序列化规范

    3. **安全性**:由于Hessian的数据是二进制的,若未进行加密处理,可能会增加安全风险。 六、实际应用与优化 在实际项目中,开发者可以结合Hessian的特性进行优化,如: 1. 对于大量数据的传输,可以考虑使用...

    序列化保存对象到Cookie中

    在上面的代码中,`MyObject`是你要序列化的自定义类型,`JsonConvert.SerializeObject()`方法负责将对象转换为JSON字符串。 **从Cookie中反序列化对象**: 当需要从Cookie中恢复对象时,我们可以读取Cookie的值,...

    memcached各种序列化策略之session共享

    实际应用中,还可以通过调整序列化参数或自定义序列化方式来优化性能。 7. **部署与监控**:部署Memcached集群并进行监控是确保session共享稳定的关键。监控内存使用情况、操作延迟以及错误日志,可以帮助发现和...

    java自定义通讯协议.doc

    - **序列化/反序列化**:对于复杂的对象结构,可以通过序列化技术转换为字节流再进行传输。 #### 六、安全性考量 - **数据加密**:对敏感信息进行加密处理,防止中途被窃取。 - **身份验证**:通过数字证书等手段...

    JAVA的对象永续之道

    自定义序列化可以带来更高效的序列化性能,或者可以实现对敏感数据的加密等特殊处理。 ### 关键术语解释 - **永续性(Persistence)**:指数据在系统关闭后仍能保持其完整性,不会丢失。 - **序列化(Serialization)*...

    对象序列化TCP传输

    对于大型或复杂对象,可能需要自定义序列化逻辑以优化存储和传输效率。此外,跨平台的对象序列化也需要特别注意,因为不同平台可能使用不同的序列化格式。 总之,对象序列化TCP传输是分布式系统和网络通信中常用的...

    祖冲之密码算法Java实现

    首先,通过一个密钥和初始向量进行初始化,生成128位的状态向量;然后,每次加密或解密时,通过状态更新过程更新这个状态向量;最后,输出函数将状态向量的一部分转化为明文或密文。 在Java中实现祖冲之密码算法,...

    shiro反序列化漏洞检测工具,含链接教程

    4. 自定义反序列化逻辑:对于必须处理的序列化数据,自定义反序列化逻辑,确保在反序列化前先检查对象类型和内容的安全性。 5. 限制反序列化的类:只允许特定的白名单类进行反序列化,防止未知类的恶意行为。 链接...

    Java的椭圆曲线加密ecc算法

    生成的密钥可以存储、序列化或用在加密和解密操作中。 此外,KeyFactory类在Java中用于处理密钥对象的转换,比如将从密钥文件中读取的DER编码转换成KeyPair对象,或者将KeyPair对象转换为可用于加密和解密操作的Key...

    Hessian加密传输

    2. **加密处理**:使用特定的加密算法(如AES、DES等)对序列化后的Hessian数据进行加密,确保数据在传输过程中的安全性。 3. **数据传输**:通过HTTP或其他网络协议将加密后的数据发送到远程服务器。 4. **解密接收...

    Shiro反序列化漏洞检测工具

    2. **禁用不必要的序列化**:避免在不受信任的输入上进行反序列化,尤其是在处理网络数据时。 3. **使用安全的反序列化库**:例如,使用`java.util.Optional`或者其他防护措施,或者使用第三方库如Apache Commons ...

    linux下java反序列化通杀回显方法的低配版实现 - 先知社区1

    这个话题源于解决Java反序列化利用过程中的两大痛点:可用的gadget(Java代码片段)和带内回显问题。通常,Java反序列化漏洞可能导致远程代码执行,但如果没有合适的gadget或无法实现回显,攻击者很难验证漏洞是否...

    shiro_attack-master.zip

    3. **自定义序列化/反序列化逻辑**:对敏感数据进行自定义序列化,确保只序列化预期的属性,避免不必要的类被序列化。 4. **使用白名单策略**:仅允许已知安全的类进行反序列化,拒绝所有未知或潜在危险的类。 5. ...

Global site tag (gtag.js) - Google Analytics