我正面臨這個奇怪的問題。我使用"Character.reverseBytes(char ch)"
方法進行加密。它運行良好,當在NetBeans
內運行。但是每當我試圖在外面運行它時,它都會產生奇怪的結果。問題在Java字符reverseBytes
我認爲這個問題是有兩種情況,它使用兩種不同的編碼方法(或類似的東西)。下面的代碼演示了這個問題。
import java.io.File;
import java.io.PrintWriter;
import java.util.ArrayList;
public class Encryptor {
public static String encode(String in) {
ArrayList<Character> list = new ArrayList<Character>();
for (int i = 0; i < in.length(); i++) {
list.add(Character.reverseBytes(in.charAt(i)));
}
return arrayToString(list);
}
public static String decode(String in) {
ArrayList<Character> list = new ArrayList<Character>();
for (int i = 0; i < in.length(); i++) {
list.add(Character.reverseBytes(in.charAt(i)));
}
return arrayToString(list);
}
private static String arrayToString(ArrayList<Character> list) {
char[] ch = new char[list.size()];
for (int i = 0; i < list.size(); i++) {
ch[i] = list.get(i);
}
return String.copyValueOf(ch);
}
public static void main(String[] args) throws java.io.FileNotFoundException, java.io.IOException {
String pass = "Password";
String passEn = encode(pass);
File file = new File(System.getProperty("user.dir") + "/pass.txt");
file.createNewFile();
PrintWriter pr = new PrintWriter(file);
pr.write(passEn);
pr.flush();
passEn = new java.util.Scanner(file).next();
String passDe = decode(passEn);
String msg;
msg = "Initial : " + pass
+ "\nEncrypted : " + passEn
+ "\nDecrypted : " + passDe;
javax.swing.JOptionPane.showMessageDialog(null, msg);
}
}
首先我將加密的單詞保存到一個文件,然後嘗試解碼保存的單詞。這在上述兩種情況下給出了兩種不同的結果。
有什麼辦法解決這個問題嗎?
你的系統上是否有不同的JRE版本,以及netbeans使用的版本? –
你不會在需要任何安全性的* real *系統中使用它,對吧? –
哇,很好的猜測。永遠不要回合。你知道如何檢查它嗎?我的意思是,在netbeans。我不知道多少回合.. – Anubis