加密/解密文件系统中的Json文件

时间:2015-12-28 04:56:00

标签: java json encryption cryptography

我们已经要求加密json文件以及其他文件格式(例如文本,主要是json),这些文件将存储在文件系统(很可能是windows)中,并将使用usb或其他一些媒体到批处理系统并在那里解密。

请向我们提出此类要求的最佳做法。我正在研究它,发现了JOSE - JSON对象签名和加密,但只是想在开始前确定。

由于 XslGuy

2 个答案:

答案 0 :(得分:0)

您似乎希望加密文件而不是对象。这很大程度上排除了JOSE,因为这是关于加密/签署对象而不是文件。

这似乎是PGP加密的主要候选者。使用PGP,您可以将私钥保留在后台进行加密并使用PGP公钥进行加密。这样加密系统就不必知道加密密钥。

有许多用于执行PGP文件加密/解密的库和密钥管理工具,这使得测试加密/解密变得容易。

对于Java Bouncy Castle将是一个主要候选人。如果遇到麻烦,Bouncy Castle的开发邮件列表是主要的信息来源 - 首先搜索它。

答案 1 :(得分:-1)

这是一个简单的加密/解密实现,不使用第三方库。这是一个河豚实施。

public static String encrypter(String value) {   
        try {   
            SecretKeySpec key = new SecretKeySpec("My_Secret_Key".getBytes(), "Blowfish");
            Cipher cipher = Cipher.getInstance("Blowfish");   
            cipher.init(Cipher.ENCRYPT_MODE, key);   
            byte[] plainTxtBytes = value.getBytes("UTF-8");   
            byte[] encBytes = cipher.doFinal(plainTxtBytes);   
            return new sun.misc.BASE64Encoder().encode(encBytes);   
        } catch (Exception ex) {   
            return value;   
        }   
    }   

    public static String decrypter(String value) {   
        try {   
            SecretKeySpec key = new SecretKeySpec("My_Secret_Key".getBytes(), "Blowfish");
            Cipher cipher = Cipher.getInstance("Blowfish");   
            cipher.init(Cipher.DECRYPT_MODE, key);   
            byte[] encBytes = new sun.misc.BASE64Decoder().decodeBuffer(value);   
            byte[] plainTxtBytes = cipher.doFinal(encBytes);   
            return new String(plainTxtBytes);   
        } catch (Exception ex) {   
            return value;   
        }   
  }

Blowfish是一种对称密钥分组密码。详细了解here.