Java 解密已加密的字符串
我有一个项目,我必须加密一个字符串,然后解密它。我得到的加密部分,但我找不到解密的方法 加密文件Java 解密已加密的字符串,java,Java,我有一个项目,我必须加密一个字符串,然后解密它。我得到的加密部分,但我找不到解密的方法 加密文件 file = Input.readFile("txt.txt").toUpperCase(); ArrayList<String> mylist = new ArrayList<String>(); mylist.add("\uD83C\uDCA1"); mylist.add("\uD83C\uDCB1"); mylist.add("\uD83C\uDCC1"); my
file = Input.readFile("txt.txt").toUpperCase();
ArrayList<String> mylist = new ArrayList<String>();
mylist.add("\uD83C\uDCA1"); mylist.add("\uD83C\uDCB1"); mylist.add("\uD83C\uDCC1"); mylist.add("\uD83C\uDCD1");
mylist.add("\uD83C\uDCA2"); mylist.add("\uD83C\uDCB2"); mylist.add("\uD83C\uDCC2"); mylist.add("\uD83C\uDCD2");
mylist.add("\uD83C\uDCA3"); mylist.add("\uD83C\uDCB3"); mylist.add("\uD83C\uDCC3"); mylist.add("\uD83C\uDCD3");
mylist.add("\uD83C\uDCA4"); mylist.add("\uD83C\uDCB4"); mylist.add("\uD83C\uDCC4"); mylist.add("\uD83C\uDCD4");
mylist.add("\uD83C\uDCA5"); mylist.add("\uD83C\uDCB5"); mylist.add("\uD83C\uDCC5"); mylist.add("\uD83C\uDCD5");
mylist.add("\uD83C\uDCA6"); mylist.add("\uD83C\uDCB6"); mylist.add("\uD83C\uDCC6"); mylist.add("\uD83C\uDCD6");
mylist.add("\uD83C\uDCA7"); mylist.add("\uD83C\uDCB7"); mylist.add("\uD83C\uDCC7"); mylist.add("\uD83C\uDCD7");
mylist.add("\uD83C\uDCA8"); mylist.add("\uD83C\uDCB8"); mylist.add("\uD83C\uDCC8"); mylist.add("\uD83C\uDCD8");
mylist.add("\uD83C\uDCA9"); mylist.add("\uD83C\uDCB9"); mylist.add("\uD83C\uDCC9"); mylist.add("\uD83C\uDCD9");
mylist.add("\uD83C\uDCAA"); mylist.add("\uD83C\uDCBA"); mylist.add("\uD83C\uDCCA"); mylist.add("\uD83C\uDCDA");
mylist.add("\uD83C\uDCAB"); mylist.add("\uD83C\uDCBB"); mylist.add("\uD83C\uDCCB"); mylist.add("\uD83C\uDCDB");
mylist.add("\uD83C\uDCAD"); mylist.add("\uD83C\uDCBD"); mylist.add("\uD83C\uDCCD"); mylist.add("\uD83C\uDCDD");
mylist.add("\uD83C\uDCAE"); mylist.add("\uD83C\uDCBE"); mylist.add("\uD83C\uDCCE"); mylist.add("\uD83C\uDCDE");
//Encypt
//going backwards
for(int i = file.length(); i > 0 ; i--){
index ++;
//shuffle the list
//Collections.shuffle(mylist);
char symbol = file.charAt(file.length() - index);
//change the ascii number by 1-10
int ascii = ((int)symbol);
//if ascii is between A-Z or a-z display a card
if( ((ascii >= (int)'A' && ascii <= (int)'Z'))) {
build += mylist.get(ascii - 65);
}
//if the ascii number is divisible by 2, display a 0, if not a 1
else{
if(ascii % 2 == 0){
build += 0;
}else{
build += 1;
}
}
}
try{
Files.write(Paths.get("encryptedFile.txt"), build.getBytes());
}catch(Exception e){
System.out.println("Oh NO!");
}
System.out.println("\nYour encrypted message is: \n" + build);
System.out.println("---------------------------------------------\t");
//End Encypt
file=Input.readFile(“txt.txt”).toUpperCase();
ArrayList mylist=新的ArrayList();
mylist.add(“\uD83C\uDCA1”);mylist.add(“\uD83C\uDCB1”);mylist.add(“\uD83C\uDCC1”);mylist.add(“\uD83C\uDCD1”);
mylist.add(“\uD83C\uDCA2”);mylist.add(“\uD83C\uDCB2”);mylist.add(“\uD83C\uDCC2”);mylist.add(“\uD83C\uDCD2”);
mylist.add(“\uD83C\uDCA3”);mylist.add(“\uD83C\uDCB3”);mylist.add(“\uD83C\uDCC3”);mylist.add(“\uD83C\uDCD3”);
mylist.add(“\uD83C\uDCA4”);mylist.add(“\uD83C\uDCB4”);mylist.add(“\uD83C\uDCC4”);mylist.add(“\uD83C\uDCD4”);
mylist.add(“\uD83C\uDCA5”);mylist.add(“\uD83C\uDCB5”);mylist.add(“\uD83C\uDCC5”);mylist.add(“\uD83C\uDCD5”);
mylist.add(“\uD83C\uDCA6”);mylist.add(“\uD83C\uDCB6”);mylist.add(“\uD83C\uDCC6”);mylist.add(“\uD83C\uDCD6”);
mylist.add(“\uD83C\uDCA7”);mylist.add(“\uD83C\uDCB7”);mylist.add(“\uD83C\uDCC7”);mylist.add(“\uD83C\uDCD7”);
mylist.add(“\uD83C\uDCA8”);mylist.add(“\uD83C\uDCB8”);mylist.add(“\uD83C\uDCC8”);mylist.add(“\uD83C\uDCD8”);
mylist.add(“\uD83C\uDCA9”);mylist.add(“\uD83C\uDCB9”);mylist.add(“\uD83C\uDCC9”);mylist.add(“\uD83C\uDCD9”);
mylist.add(“\uD83C\uDCAA”);mylist.add(“\uD83C\uDCBA”);mylist.add(“\uD83C\uDCCA”);mylist.add(“\uD83C\uDCDA”);
mylist.add(“\uD83C\uDCAB”);mylist.add(“\uD83C\uDCBB”);mylist.add(“\uD83C\uDCCB”);mylist.add(“\uD83C\uDCDB”);
mylist.add(“\uD83C\uDCAD”);mylist.add(“\uD83C\uDCBD”);mylist.add(“\uD83C\uDCCD”);mylist.add(“\uD83C\uDCDD”);
mylist.add(“\uD83C\uDCAE”);mylist.add(“\uD83C\uDCBE”);mylist.add(“\uD83C\uDCCE”);mylist.add(“\uD83C\uDCDE”);
//百科全书
//倒退
对于(int i=file.length();i>0;i--){
索引++;
//洗牌
//收藏。洗牌(mylist);
char symbol=file.charAt(file.length()-index);
//将ascii数字更改为1-10
int ascii=((int)符号);
//如果ascii在A-Z或A-Z之间,则显示卡
如果((ascii>=(int)'A'&&ascii,您将在注释中找到带有解释的工作代码
import java.util.*;
class EncryptDecrypt {
public static void main(String[] args) {
// List to convert ascii characters to cards
ArrayList<String> mylist = new ArrayList<String>();
mylist.add("\uD83C\uDCA1"); mylist.add("\uD83C\uDCB1");
mylist.add("\uD83C\uDCC1"); mylist.add("\uD83C\uDCD1");
mylist.add("\uD83C\uDCA2"); mylist.add("\uD83C\uDCB2");
mylist.add("\uD83C\uDCC2"); mylist.add("\uD83C\uDCD2");
mylist.add("\uD83C\uDCA3"); mylist.add("\uD83C\uDCB3");
mylist.add("\uD83C\uDCC3"); mylist.add("\uD83C\uDCD3");
mylist.add("\uD83C\uDCA4"); mylist.add("\uD83C\uDCB4");
mylist.add("\uD83C\uDCC4"); mylist.add("\uD83C\uDCD4");
mylist.add("\uD83C\uDCA5"); mylist.add("\uD83C\uDCB5");
mylist.add("\uD83C\uDCC5"); mylist.add("\uD83C\uDCD5");
mylist.add("\uD83C\uDCA6"); mylist.add("\uD83C\uDCB6");
mylist.add("\uD83C\uDCC6"); mylist.add("\uD83C\uDCD6");
mylist.add("\uD83C\uDCA7"); mylist.add("\uD83C\uDCB7");
mylist.add("\uD83C\uDCC7"); mylist.add("\uD83C\uDCD7");
mylist.add("\uD83C\uDCA8"); mylist.add("\uD83C\uDCB8");
mylist.add("\uD83C\uDCC8"); mylist.add("\uD83C\uDCD8");
mylist.add("\uD83C\uDCA9"); mylist.add("\uD83C\uDCB9");
mylist.add("\uD83C\uDCC9"); mylist.add("\uD83C\uDCD9");
mylist.add("\uD83C\uDCAA"); mylist.add("\uD83C\uDCBA");
mylist.add("\uD83C\uDCCA"); mylist.add("\uD83C\uDCDA");
mylist.add("\uD83C\uDCAB"); mylist.add("\uD83C\uDCBB");
mylist.add("\uD83C\uDCCB"); mylist.add("\uD83C\uDCDB");
mylist.add("\uD83C\uDCAD"); mylist.add("\uD83C\uDCBD");
mylist.add("\uD83C\uDCCD"); mylist.add("\uD83C\uDCDD");
mylist.add("\uD83C\uDCAE"); mylist.add("\uD83C\uDCBE");
mylist.add("\uD83C\uDCCE"); mylist.add("\uD83C\uDCDE");
// Example string (can be read from file if needed)
String text = "A B C";
// The encrypted string
String encrypted = "";
// Encrypt
// Note: You can use "i" instead of using another variable "index"
for(int i = 0; i < text.length() ; i++){
// Get next character from text (or file)
char symbol = text.charAt(i);
// Convert character to int
int ascii = ((int)symbol);
//if ascii is between A-Z or a-z display a card
if( ((ascii >= (int)'A' && ascii <= (int)'Z'))) {
encrypted += mylist.get(ascii - 65);
} else if(ascii % 2 == 0) { // Using "else if" here makes the code much cleaner
encrypted += "0"; // Here you should append a character "0" instead of the integer 0
} else{
encrypted += "1"; // Here you should append a character "1" instead of the integer 1
}
}
System.out.println("\nYour encrypted message is: \n" + encrypted);
System.out.println("---------------------------------------------\t");
// The decrypted text
String decrypted = "";
// Decrypting this is a little more difficult for multiple reasons.
// 1. The cards are 2 character symbols. Meaning we have to check if the next character is a card or not
// 2. Then, once we know if it is a card or not, we need to take apropriate action
// 3. Inherently we loose some information while encrypting. Therefore we will never get back the exact same string
// Storage to store one character if we encounter a card
String charStore = "";
// Loop through text
for(int i = 0; i < encrypted.length(); i++){
// Get next character
char nextChar = encrypted.charAt(i);
if(charStore.length() == 0) {
// Our character store is empty, so we check what the next character is
if(nextChar == "0".charAt(0)) {
// We found our next character to be a "0". So we convert it to a space
// This is where we lost information. we don't know exactly which character was here before
decrypted += " ";
} else if (nextChar == "1".charAt(0)) {
// We found our next character to be a "1". So we convert it to a !
// This is where we also lost information. we don't know exactly which character was here before
decrypted += "!";
} else {
// The character is neither a "0" nor a "1", so it has to be part of a chard, which is 2 characters in length
// We store the current character in our storage "charStore"
charStore += nextChar;
}
} else {
// Our character store contained at least one character.
// So we can safely assume that together with the next character we have a card symbol
// Concatenate stored and current character
charStore += nextChar;
// Search for the card in the list
// Remember that you subtracted 65 from previously, so we have to add 65 here.
// Also: You forgot the argument inside the "indexOf" in your code
decrypted += (char)(mylist.indexOf(charStore) + 65);
// Reset the character store
charStore = "";
}
}
System.out.println("\nYour decrypted message is: \n" + decrypted);
}
}
import java.util.*;
类加密解密{
公共静态void main(字符串[]args){
//将ascii字符转换为卡片的列表
ArrayList mylist=新的ArrayList();
mylist.add(“\uD83C\uDCA1”);mylist.add(“\uD83C\uDCB1”);
mylist.add(“\uD83C\uDCC1”);mylist.add(“\uD83C\uDCD1”);
mylist.add(“\uD83C\uDCA2”);mylist.add(“\uD83C\uDCB2”);
mylist.add(“\uD83C\uDCC2”);mylist.add(“\uD83C\uDCD2”);
mylist.add(“\uD83C\uDCA3”);mylist.add(“\uD83C\uDCB3”);
mylist.add(“\uD83C\uDCC3”);mylist.add(“\uD83C\uDCD3”);
mylist.add(“\uD83C\uDCA4”);mylist.add(“\uD83C\uDCB4”);
mylist.add(“\uD83C\uDCC4”);mylist.add(“\uD83C\uDCD4”);
mylist.add(“\uD83C\uDCA5”);mylist.add(“\uD83C\uDCB5”);
mylist.add(“\uD83C\uDCC5”);mylist.add(“\uD83C\uDCD5”);
mylist.add(“\uD83C\uDCA6”);mylist.add(“\uD83C\uDCB6”);
mylist.add(“\uD83C\uDCC6”);mylist.add(“\uD83C\uDCD6”);
mylist.add(“\uD83C\uDCA7”);mylist.add(“\uD83C\uDCB7”);
mylist.add(“\uD83C\uDCC7”);mylist.add(“\uD83C\uDCD7”);
mylist.add(“\uD83C\uDCA8”);mylist.add(“\uD83C\uDCB8”);
mylist.add(“\uD83C\uDCC8”);mylist.add(“\uD83C\uDCD8”);
mylist.add(“\uD83C\uDCA9”);mylist.add(“\uD83C\uDCB9”);
mylist.add(“\uD83C\uDCC9”);mylist.add(“\uD83C\uDCD9”);
mylist.add(“\uD83C\uDCAA”);mylist.add(“\uD83C\uDCBA”);
mylist.add(“\uD83C\uDCCA”);mylist.add(“\uD83C\uDCDA”);
mylist.add(“\uD83C\uDCAB”);mylist.add(“\uD83C\uDCBB”);
mylist.add(“\uD83C\uDCCB”);mylist.add(“\uD83C\uDCDB”);
mylist.add(“\uD83C\uDCAD”);mylist.add(“\uD83C\uDCBD”);
mylist.add(“\uD83C\uDCCD”);mylist.add(“\uD83C\uDCDD”);
mylist.add(“\uD83C\uDCAE”);mylist.add(“\uD83C\uDCBE”);
mylist.add(“\uD83C\uDCCE”);mylist.add(“\uD83C\uDCDE”);
//示例字符串(如果需要,可以从文件中读取)
String text=“A B C”;
//加密字符串
字符串加密=”;
//加密
//注意:您可以使用“i”而不是使用另一个变量“index”
对于(int i=0;i 如果(((ascii>=(int)'A'&&ascii)您是否已经使用调试器单步执行了代码?您是否必须在项目中编写自己的加密算法?因为如果这不是要求,那么它必须是原始的@miketheliar请注意,在读取或写入文件时,您没有指定任何编码。因此默认编码是(最有可能的是平台编码)将被使用,因为这可能不同,您肯定会遇到问题。请尝试指定UTF-8之类的编码,无论您在哪里读取文件或在字符串和字节之间转换。
import java.util.*;
class EncryptDecrypt {
public static void main(String[] args) {
// List to convert ascii characters to cards
ArrayList<String> mylist = new ArrayList<String>();
mylist.add("\uD83C\uDCA1"); mylist.add("\uD83C\uDCB1");
mylist.add("\uD83C\uDCC1"); mylist.add("\uD83C\uDCD1");
mylist.add("\uD83C\uDCA2"); mylist.add("\uD83C\uDCB2");
mylist.add("\uD83C\uDCC2"); mylist.add("\uD83C\uDCD2");
mylist.add("\uD83C\uDCA3"); mylist.add("\uD83C\uDCB3");
mylist.add("\uD83C\uDCC3"); mylist.add("\uD83C\uDCD3");
mylist.add("\uD83C\uDCA4"); mylist.add("\uD83C\uDCB4");
mylist.add("\uD83C\uDCC4"); mylist.add("\uD83C\uDCD4");
mylist.add("\uD83C\uDCA5"); mylist.add("\uD83C\uDCB5");
mylist.add("\uD83C\uDCC5"); mylist.add("\uD83C\uDCD5");
mylist.add("\uD83C\uDCA6"); mylist.add("\uD83C\uDCB6");
mylist.add("\uD83C\uDCC6"); mylist.add("\uD83C\uDCD6");
mylist.add("\uD83C\uDCA7"); mylist.add("\uD83C\uDCB7");
mylist.add("\uD83C\uDCC7"); mylist.add("\uD83C\uDCD7");
mylist.add("\uD83C\uDCA8"); mylist.add("\uD83C\uDCB8");
mylist.add("\uD83C\uDCC8"); mylist.add("\uD83C\uDCD8");
mylist.add("\uD83C\uDCA9"); mylist.add("\uD83C\uDCB9");
mylist.add("\uD83C\uDCC9"); mylist.add("\uD83C\uDCD9");
mylist.add("\uD83C\uDCAA"); mylist.add("\uD83C\uDCBA");
mylist.add("\uD83C\uDCCA"); mylist.add("\uD83C\uDCDA");
mylist.add("\uD83C\uDCAB"); mylist.add("\uD83C\uDCBB");
mylist.add("\uD83C\uDCCB"); mylist.add("\uD83C\uDCDB");
mylist.add("\uD83C\uDCAD"); mylist.add("\uD83C\uDCBD");
mylist.add("\uD83C\uDCCD"); mylist.add("\uD83C\uDCDD");
mylist.add("\uD83C\uDCAE"); mylist.add("\uD83C\uDCBE");
mylist.add("\uD83C\uDCCE"); mylist.add("\uD83C\uDCDE");
// Example string (can be read from file if needed)
String text = "A B C";
// The encrypted string
String encrypted = "";
// Encrypt
// Note: You can use "i" instead of using another variable "index"
for(int i = 0; i < text.length() ; i++){
// Get next character from text (or file)
char symbol = text.charAt(i);
// Convert character to int
int ascii = ((int)symbol);
//if ascii is between A-Z or a-z display a card
if( ((ascii >= (int)'A' && ascii <= (int)'Z'))) {
encrypted += mylist.get(ascii - 65);
} else if(ascii % 2 == 0) { // Using "else if" here makes the code much cleaner
encrypted += "0"; // Here you should append a character "0" instead of the integer 0
} else{
encrypted += "1"; // Here you should append a character "1" instead of the integer 1
}
}
System.out.println("\nYour encrypted message is: \n" + encrypted);
System.out.println("---------------------------------------------\t");
// The decrypted text
String decrypted = "";
// Decrypting this is a little more difficult for multiple reasons.
// 1. The cards are 2 character symbols. Meaning we have to check if the next character is a card or not
// 2. Then, once we know if it is a card or not, we need to take apropriate action
// 3. Inherently we loose some information while encrypting. Therefore we will never get back the exact same string
// Storage to store one character if we encounter a card
String charStore = "";
// Loop through text
for(int i = 0; i < encrypted.length(); i++){
// Get next character
char nextChar = encrypted.charAt(i);
if(charStore.length() == 0) {
// Our character store is empty, so we check what the next character is
if(nextChar == "0".charAt(0)) {
// We found our next character to be a "0". So we convert it to a space
// This is where we lost information. we don't know exactly which character was here before
decrypted += " ";
} else if (nextChar == "1".charAt(0)) {
// We found our next character to be a "1". So we convert it to a !
// This is where we also lost information. we don't know exactly which character was here before
decrypted += "!";
} else {
// The character is neither a "0" nor a "1", so it has to be part of a chard, which is 2 characters in length
// We store the current character in our storage "charStore"
charStore += nextChar;
}
} else {
// Our character store contained at least one character.
// So we can safely assume that together with the next character we have a card symbol
// Concatenate stored and current character
charStore += nextChar;
// Search for the card in the list
// Remember that you subtracted 65 from previously, so we have to add 65 here.
// Also: You forgot the argument inside the "indexOf" in your code
decrypted += (char)(mylist.indexOf(charStore) + 65);
// Reset the character store
charStore = "";
}
}
System.out.println("\nYour decrypted message is: \n" + decrypted);
}
}