我们已经要求加密json文件以及其他文件格式(例如文本,主要是json),这些文件将存储在文件系统(很可能是windows)中,并将使用usb或其他一些媒体到批处理系统并在那里解密。
请向我们提出此类要求的最佳做法。我正在研究它,发现了JOSE - JSON对象签名和加密,但只是想在开始前确定。
由于 XslGuy
答案 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.