Java如何使用DES加密对象?

本示例演示使用DES算法加密对象。加密对象后,我们将其存储在文件中,该文件将在下一个示例中解密,该如何使用DES解密对象。

package org.nhooo.example.crypto;

import java.io.*;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SealedObject;
import javax.crypto.SecretKey;

public class ObjectEncrypt {
    public static void main(String[] args) throws Exception {
        // 生成临时密钥并将其存储在文件中。
        SecretKey key = KeyGenerator.getInstance("DES").generateKey();
        writeToFile("secretkey.dat", key);

        // 准备用于加密的密码对象。
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.ENCRYPT_MODE, key);

        // 在这里,我们密封(加密)简单的字符串消息(字符串对象)。
        SealedObject sealedObject = new SealedObject("THIS IS A SECRET MESSAGE!", cipher);

        // 将对象作为二进制文件写出。
        writeToFile("sealed.dat", sealedObject);
    }

    // 将对象存储在文件中以备将来使用。
    private static void writeToFile(String filename, Object object) throws Exception {
        try (FileOutputStream fos = new FileOutputStream(new File(filename));
             ObjectOutputStream oos = new ObjectOutputStream(fos)) {

            oos.writeObject(object);
        }
    }
}