首页 > 解决方案 > 如何在没有文件 I/O 的情况下打印 SealedObject 加密数据?

问题描述

下面是我的代码。当我尝试打印密封对象时,它只显示

“javax.crypto.SealedObject@34dac684”

private void encryptUserCodes(List<UserCode> userCodes) {

        try {
            // generate a secret key using the DES algorithm
            key = KeyGenerator.getInstance("DES").generateKey();
            ecipher = Cipher.getInstance("DES");
            dcipher = Cipher.getInstance("DES");
            // initialize the ciphers with the given key
            ecipher.init(Cipher.ENCRYPT_MODE, key);
            dcipher.init(Cipher.DECRYPT_MODE, key);
            // create a sealed object
            SealedObject sealed = new SealedObject((Serializable) userCodes, ecipher);
            //PRINT SEALED OBJECT HERE
        }
        catch(Exception e){
            e.printStackTrace();
        }
}

标签: javaencryptionpublic-key-encryptionpassword-encryption

解决方案


System.out.println将始终打印toString()方法的值。在您的情况下,打印 Class@hex 是 Object 类中的默认实现,它在 java 中的所有类中都被继承。

您可以创建自定义方法来打印您的对象。

通过从您的对象调用 getter 方法并打印它们来提供遍历期望结果的方法定义。连接和返回也是一种选择。


推荐阅读