Вы должны использовать Google для шифрования / дешифрования, слишком специфично для JSON , а не для Текстовый файл .Если вы хотите зашифровать текстовый файл, который так и содержит контент JSON, то в Интернете полно примеров, в том числе и SO.Тем не менее, вот некоторые методы, которые будут выполнять эту задачу.
Шифрование содержимого файла, представленное здесь, использует кодирование Java 8 Base64 Class и затем Caesar Cipher (который является шифром сдвига) применяется к каждой строке файла. Ни в коем случае это не считается безопасным шифрованием , но этого достаточно, чтобы запутать большинство (по крайней мере, на несколько секунд).
Идея здесь состоит в том, чтобы прочитать в текстовом файле JSON одну строкувовремя.Когда каждая строка читается в ней, она кодируется, шифруется и сохраняется в пути к файлу назначения, пока не будет достигнут конец файла.Когда вы закончите, вы увидите, что файл назначения никоим образом не является разборчивым относительно того, какой тип файла мог быть оригиналом, по крайней мере, до тех пор, пока он не будет расшифрован.Весь текст зашифрован, включая отступ формата.Расшифровка файлов выполняется аналогичным образом.
Здесь представлены четыре простых метода, для которых требуется Java 8+ для выполнения задачи шифрования / дешифрования:
Для кодирования иЗашифровать строку:
/**
* *** THIS METHOD BY NO MEANS PROVIDES A SECURE ENCRYPTION ***<BR><BR>
* <p>
* This is an extremely easy String encryption algorithm that encodes the
* supplied string to Base64 then applies a Caesar Cipher (which is a shift
* cipher). See: https://en.wikipedia.org/wiki/Caesar_cipher<br><br>
* <p>
* You MUST use the provided easyDecrypt() method to decrypt a string that
* has been encrypted with this method.<br><br>
*
* @param inputString (String) The string to encrypt.<br>
*
* @return (String) The encrypted string.<br>
*/
public static String easyEncrypt(String inputString) {
try {
String b64encoded = Base64.getEncoder().encodeToString(inputString.getBytes("UTF-8"));
// Reverse the string
String reverse = new StringBuffer(b64encoded).reverse().toString();
StringBuilder tmp = new StringBuilder();
final int OFFSET = 4;
for (int i = 0; i < reverse.length(); i++) {
tmp.append((char) (reverse.charAt(i) + OFFSET));
}
return tmp.toString();
}
catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
return "";
}
Для декодирования и расшифровки строки:
/**
* This method is used to decrypt string that have been encrypted with the
* provided easyEncrypt() method.<br><br>
* <p>
* Simply supply the encrypted string.<br><br>
*
* @param inputString (String) The encrypted string which was created by the
* easyEncrypt() Method.<br>
*
* @return (String) The original string decrypted.<br>
*/
public static String easyDecrypt(String inputString) {
StringBuilder tmp = new StringBuilder();
final int OFFSET = 4;
for (int i = 0; i < inputString.length(); i++) {
tmp.append((char) (inputString.charAt(i) - OFFSET));
}
String reversed = new StringBuffer(tmp.toString()).reverse().toString();
return new String(Base64.getDecoder().decode(reversed));
}
Для шифрования файла:
public void encryptFile(String sourceFilePath, String destinationFilePath) {
try {
try (Scanner reader = new Scanner(new File(sourceFilePath));
BufferedWriter writer = new BufferedWriter(new FileWriter(destinationFilePath))) {
String line;
while(reader.hasNextLine()) {
line = reader.nextLine();
String encryptedLine = easyEncrypt(line);
writer.write(encryptedLine + System.lineSeparator());
}
}
}
catch (FileNotFoundException ex) {
ex.printStackTrace();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
Для расшифровки файла:
public void decryptFile(String sourceFilePath, String destinationFilePath) {
try {
try (Scanner reader = new Scanner(new File(sourceFilePath));
BufferedWriter writer = new BufferedWriter(new FileWriter(destinationFilePath))) {
String line;
while(reader.hasNextLine()) {
line = reader.nextLine();
String decryptedLine = easyDecrypt(line);
writer.write(decryptedLine + System.lineSeparator());
}
}
}
catch (FileNotFoundException ex) {
ex.printStackTrace();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
Чтобы использовать вышеуказанные методы:
encryptFile("SimpleJSON.txt", "NewEncryptedFile.txt");
СДля примера содержимого JSON, предоставленного вами в вашем сообщении, содержимое файла описания будет выглядеть следующим образом:
AA{iksnM59[^xN}i
wMW^wpq^mEmSmU[emEGM
wMW^wpqVmEmSmY[hwJqhmEGM
;FmSmE\h{=KgmEGM
AwJM:MWfpV\e59[^xNGMkEGM
AAEP=NWOsQ6fIh\^SZKhlZqgHNGM:M}enpKfn96fmEGPmg\^SNGM:MW^5|[]6N}ikEGMkEGM
w4rMtk}]zVofpF7XmEmSmw6]t|6]y=qMk{mMyZKgTNGM:MW^5|[]6N}ikEGMkEGM
AAUjmoGOn=KVpR7fwRoMksnMvR[ewRqfzNGMwMW^~=KfHNGM:MW^5|[]6N}ikEGMkEGM
A4JMkEGM
=FGM
A4\j
А теперь для расшифровки этого файла:
decryptFile("NewEncryptedFile.txt", "DecryptedFile.txt");
Расшифрованный файл назначения будет выглядеть так::
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}