Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SealeObject vs Stream Cypher,利弊_Java_Android_Encryption - Fatal编程技术网

Java SealeObject vs Stream Cypher,利弊

Java SealeObject vs Stream Cypher,利弊,java,android,encryption,Java,Android,Encryption,我有两种加密和解密java对象的方法: 使用SealedObject,并使用普通的FileOutputStream和FileInputStream保存和加载此对象 b使用CipherOutputStream和CipherInputStream保存序列化对象 这两种选择在性能和/或安全性方面是否存在差异?密封对象: 使程序员能够创建对象并使用加密算法保护其机密性 给定任何可序列化对象,可以创建一个SealedObject,以序列化格式(即深度副本)封装原始对象,并使用加密算法(如DES)对其序列化

我有两种加密和解密java对象的方法:

使用SealedObject,并使用普通的FileOutputStream和FileInputStream保存和加载此对象

b使用CipherOutputStream和CipherInputStream保存序列化对象

这两种选择在性能和/或安全性方面是否存在差异?

密封对象:

使程序员能够创建对象并使用加密算法保护其机密性

给定任何可序列化对象,可以创建一个SealedObject,以序列化格式(即深度副本)封装原始对象,并使用加密算法(如DES)对其序列化内容进行加密,以保护其机密性。加密的内容稍后可以使用正确的解密密钥用相应的算法解密并反序列化,从而生成原始对象

请注意,在应用于SealedObject之前,必须使用正确的算法、密钥、填充方案等完全初始化Cipher对象

密码输出流:

由InputStream和密码组成,因此read方法返回从底层InputStream读入但已由密码额外处理的数据。密码在被CipherInputStream使用之前必须完全初始化。例如,如果密码是为解密而初始化的,则CipherInputStream将在返回解密数据之前尝试读入数据并解密。此类严格遵守语义,尤其是失败语义,它的祖先类java.io.FilterInputStream和java.io.InputStream。该类正好具有在其祖先类中指定的那些方法,并重写它们。此外,该类捕获其祖先类未引发的所有异常。特别是,skip方法跳过,可用方法仅统计已被封装密码处理的数据。对于使用此类的程序员来说,关键是不要使用此类中未定义或重写的方法,例如新方法或构造函数,该方法或构造函数随后添加到其中一个超类中,因为这些方法的设计和实现不太可能考虑到CipherInputStream的安全影响

CipherOutPutStream:

CipherOutputStream由一个OutputStream和一个密码组成,因此write方法首先处理数据,然后再将数据写入底层OutputStream。密码在被CipherOutputStream使用之前必须完全初始化。例如,如果密码是为加密而初始化的,则CipherOutputStream将在写入加密数据之前尝试加密数据。此类严格遵守语义,尤其是失败语义,它的祖先类java.io.OutputStream和java.io.FilterOutputStream。该类正好具有在其祖先类中指定的那些方法,并重写它们。此外,该类捕获其祖先类未引发的所有异常。对于使用该类的程序员来说,至关重要的是不要使用未在该类中定义或重写的方法,例如后来添加到其中一个超类的新方法或构造函数,因为这些方法的设计和实现不太可能考虑到CipherOutputStream的安全影响

您应该已经阅读了Oracle文档以了解这一点。

密封对象:

使程序员能够创建对象并使用加密算法保护其机密性

给定任何可序列化对象,可以创建一个SealedObject,以序列化格式(即深度副本)封装原始对象,并使用加密算法(如DES)对其序列化内容进行加密,以保护其机密性。加密的内容稍后可以使用正确的解密密钥用相应的算法解密并反序列化,从而生成原始对象

请注意,在应用于SealedObject之前,必须使用正确的算法、密钥、填充方案等完全初始化Cipher对象

密码输出流:

由InputStream和密码组成,因此read方法返回从底层InputStream读入但已由密码额外处理的数据。密码在被CipherInputStream使用之前必须完全初始化。例如,如果密码是为解密而初始化的,则CipherInputStream将在返回解密数据之前尝试读入数据并解密。此类严格遵守语义,尤其是失败语义,它的祖先类java.io.FilterInputStream和java.io.InputStream。该类正好具有在其祖先类中指定的那些方法,并重写它们。此外,该类捕获所有不是t的异常 hr由其祖先类拥有。特别是,skip方法跳过,可用方法仅统计已被封装密码处理的数据。对于使用此类的程序员来说,关键是不要使用此类中未定义或重写的方法,例如新方法或构造函数,该方法或构造函数随后添加到其中一个超类中,因为这些方法的设计和实现不太可能考虑到CipherInputStream的安全影响

CipherOutPutStream:

CipherOutputStream由一个OutputStream和一个密码组成,因此write方法首先处理数据,然后再将数据写入底层OutputStream。密码在被CipherOutputStream使用之前必须完全初始化。例如,如果密码是为加密而初始化的,则CipherOutputStream将在写入加密数据之前尝试加密数据。此类严格遵守语义,尤其是失败语义,它的祖先类java.io.OutputStream和java.io.FilterOutputStream。该类正好具有在其祖先类中指定的那些方法,并重写它们。此外,该类捕获其祖先类未引发的所有异常。对于使用该类的程序员来说,至关重要的是不要使用未在该类中定义或重写的方法,例如后来添加到其中一个超类的新方法或构造函数,因为这些方法的设计和实现不太可能考虑到CipherOutputStream的安全影响


您应该已经阅读了Oracle文档。

我已经阅读了Oracle文档,但我的问题不是什么是SealeObject和Cipherstream,但是在性能方面有什么不同吗?这里提到了所有内容,如果您需要更深入的知识,请使用JavaDoc,它们将为您提供更详细的JVM运行时环境知识,即如何将内容处理为对象和.obj文件。如果我伤害了你,我很抱歉。@NaveedYousaf如果他问到这两种方法的区别和安全性,那么现在关于它们的功能和JavaDoc copypaste是完全不能接受的。我已经阅读了Oracle文档,但我的问题不是什么是SealedObject和Cipherstream,但是在性能方面有什么不同吗?这里提到了所有内容,如果您需要更深入的知识,请使用JavaDoc,它们将为您提供更详细的JVM运行时环境知识,即如何将内容处理为对象和.obj文件。如果我伤害了你,我很抱歉。@NaveedYousaf如果他问到这两种方法的区别和安全性,那么现在关于它们的功能和JavaDoc copypaste在这里是完全不能接受的