Sau đây là một mã mà sẽ mã hóa chuỗi user:Phương thức cập nhật của MessageDigest làm và BASE64Encoder có nghĩa là gì?
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import sun.misc.BASE64Encoder;
import java.io.*;
class Encrypter {
public synchronized String encrypt(String plainText) throws Exception {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA");
}catch(Exception exc) {
throw new Exception(exc.getMessage());
}
try {
md.update(plainText.getBytes("UTF-8"));
}catch(Exception exc) {
throw new Exception(exc.getMessage());
}
byte raw[] = md.digest();
String hash = (new BASE64Encoder()).encode(raw);
return hash;
}
public static void main(String args[]) {
try {
Encrypter encrypter = new Encrypter();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String userInput = br.readLine();
String encryptedPassword = encrypter.encrypt(userInput);
System.out.println(encryptedPassword);
} catch(Exception exc) {
System.out.println(exc);
}
}
}
Khi tôi biên dịch mã tôi nhận được những cảnh báo này:
Encrypter.java:4: warning: BASE64Encoder is internal proprietary API and may be removed in a future release
import sun.misc.BASE64Encoder;
^
Encrypter.java:23: warning: BASE64Encoder is internal proprietary API and may be removed in a future release
String hash = (new BASE64Encoder()).encode(raw);
^
2 warnings
Có phương pháp nào khác để mã hóa chuỗi trong java?
Phương pháp update
của lớp MessageDigest
làm gì? tức là tuyên bố md.update(plainText.getBytes("UTF-8"));
làm gì?
Lớp học BASE64Encoder
là gì? Tôi không thể tìm thấy đó là DOC
"Mã hóa" cho thấy hoạt động có thể đảo ngược. Đây là * băm * (với SHA trong trường hợp này). –
Bạn cũng có thể sử dụng '[DatatypeConverter.printBase64Binary (byte [])'] (http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/DatatypeConverter.html#printBase64Binary (byte [])) – Zaki