我无法理解我将在下面提供的代码中的几行。
//imports here
public class Main
public static void main(String[] args) {
try {
String text = "this text will be encrypted";
String key = "Bar12345Bar12345";
//Create key and cipher
Key aesKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
//encrypt text
cipher.init(Cipher.ENCRYPT_MODE, aesKey);
byte[] encrypted = cipher.doFinal(text.getBytes());
write(new String(encrypted));
} catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) {
e.printStackTrace();
}
}
public static void write(String message) {
BufferedWriter bw = null;
FileWriter fw = null;
try {
String data = message;
File file = new File(FILENAME);
if (!file.exists()) {
file.createNewFile();
}
fw = new FileWriter(file.getAbsoluteFile(), true);
bw = new BufferedWriter(fw);
bw.write(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bw != null)
bw.close();
if (fw != null)
fw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
我在他们的评论中写了几行我不知道的意义。我也是汇编语言编程的新手,这是我在教科书中读到的内容
答案 0 :(得分:2)
MOV DL,10H; what is significance of this line?
10H
很可能是应该读取10
的拼写错误,这是换行符的ASCII代码。它将光标在屏幕上向下移动1行。
MOV DL,13H ; what is significane of this line
13H
很可能是应该读取13
的拼写错误,这是回车的ASCII代码。它将光标移动到屏幕的最左侧。
INT 21H; And this one
INT 21H
指令是一个DOS系统调用,它执行您将函数编号放在AH
寄存器中的函数。
如果当前字符不是空格字符,则整个代码将输出当前字符 如果它是空格字符,则代码执行换行序列(回车+换行)。
由于在此内联汇编代码之前发生了后增量sc++
,因此只有MOV DL,strings[SI]
指令替换为MOV DL,strings[SI-1]
时,代码才能正常工作。
感谢interjay抓住错别字。