我有一个加密类(PGP encryption util),它只接受java.io.File对象。用于加密的内部方法(在jar中)只接受java.io.File作为参数。
我需要从共享路径中读取一个文件,在该路径中需要进行身份验证才能访问和解密相同的文件,然后写回相同的共享路径。所以我使用jcifs来读取文件。它以SmbFile格式读取文件。
我有两个疑问
1)是否可以将SmbFile转换为java.io.File,而无需将内容写入实际文件(甚至不是临时文件)?并将File对象传递给文件加密方法,如下所示。
File someFile = ConvertSmbFileToFile(SmbFile smb);
pgpEncryptionService.encryptFile(someFile,true);2)如果不能进行上述操作,是否可以使用SmbFile类型作为输入进行PGP加密?有没有人可以分享相关链接?
我的项目安全性只希望通过网络传输加密的文件。因此,将SmbFile写到java.io.File似乎不是一种选择。即使是写入临时文件也像是允许非加密数据通过网络层传输一样。所以临时文件也不在范围之内。
发布于 2019-07-14 15:50:56
SMB 3及更高版本(3.1.1)支持加密/解密,因此您可以使用支持这些SMB方言的SMB库。( SMB3支持ccm算法,3.1.1支持gcm)您只需要确保另一台主机支持SMB3及以上版本即可。
如果我没记错的话,只有Visuality的jNQ产品支持这些中小型企业的方言。
我认为jCIFS和jNQ支持OutStream和InputStream,所以也许您可以使用它来代替java.io.file
祝好运
发布于 2019-07-14 16:48:52
我假设其目的是加密文件,而不是加密SMB流量。那么解决方案可能是在扩展java.io.File的SmbFile周围创建一个包装类。我猜您所需要的就是通过SmbFile的相同方法实现getInputStream()。
https://stackoverflow.com/questions/57016855
复制相似问题