EncriptThisClass so = new EncriptThisClass();
SealedObject encryptedObject =encryptObject(so);
EncriptThisClass etcObject=decryptObject(encryptedObject);
String fileName = "result.dat"; //some result file
//You may use any combination, but you should use the same for writing and reading
SecretKey key64 = new SecretKeySpec( new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }, "Blowfish" );
Cipher cipher = Cipher.getInstance( "Blowfish" );
//Code to write your object to file
cipher.init( Cipher.ENCRYPT_MODE, key64 );
Person person = new Person(); //some object to serialise
SealedObject sealedObject = new SealedObject( person, cipher);
CipherOutputStream cipherOutputStream = new CipherOutputStream( new BufferedOutputStream( new FileOutputStream( fileName ) ), cipher );
ObjectOutputStream outputStream = new ObjectOutputStream( cipherOutputStream );
outputStream.writeObject( sealedObject );
outputStream.close();
//Code to read your object from file
cipher.init( Cipher.DECRYPT_MODE, key64 );
CipherInputStream cipherInputStream = new CipherInputStream( new BufferedInputStream( new FileInputStream( fileName ) ), cipher );
ObjectInputStream inputStream = new ObjectInputStream( cipherInputStream );
SealedObject sealedObject = (SealedObject) inputStream.readObject();
Person person1 = (Person) sealedObject.getObject( cipher );
7条答案
按热度按时间sz81bmfz1#
一般来说(因为我现在很少使用java):
我建议搜索多种形式的加密,找到适合您的加密方式,然后查找并修改已经为您的数据编写的模块,或者根据您希望使用的算法编写自己的模块。
例如,如果您想使用sha256并发现已经为您编写了一个模块,只需修改它以使用所需的数据流。
然后,您可以随时调用它来编写数据流。然后,模块将保存自己的数据流,然后将其写入文件。
cczfrluj2#
你应该调查一下jasypt。它有一系列的实用函数来简化这个过程。
bxfogqkk3#
你就不能用任何加密库吗?你的基本代码是
然后你就过去了
s
任何你想要的加密系统。编辑:我忘了
StringStream
是c++的东西,不是java的。但你基本上可以做同样的事情,看看这里。k3fezbri4#
javax.crypto.SealedObject
绝对是答案。钥匙有什么问题?6vl6ewon5#
使用sealedobject和cipher类对对象进行加密和解密。
什么是sealedobject?
sealedobject封装原始java对象(它应该实现可序列化)。它使用加密算法来密封对象的序列化内容。
什么是密码?
这是一个java类,使用加密算法进行加密和解密。
样本代码
下面是示例代码。
完整的代码请访问下面的链接。http://javaant.com/object-encryption-decryption-in-java/#.vvka6rj96hs
ibrsph3r6#
使用
CipherOutPutStream
(http://docs.oracle.com/javase/6/docs/api/javax/crypto/cipheroutputstream.html)在这里,将对象写入objectoutputstream可能是一种简单而好的方法。uqjltbpv7#
请尝试以下代码: