以下是将加密用户字符串的代码:
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);
}
}
}
当我编译代码时,我得到以下警告:
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
在java中有没有其他加密字符串的方法?
MessageDigest
类的方法update
做了什么?也就是说,语句md.update(plainText.getBytes("UTF-8"));
做了什么?
什么是BASE64Encoder
类?我找不到是DOC
发布于 2012-02-23 01:22:54
发布于 2017-02-11 01:16:21
而这里的旧帖子是一个更新的答案。Java8的Base64。
发布于 2012-08-14 14:23:19
对于Base64加密和解密,此警告明确表示它不鼓励使用Base64Encoder的Sun实现,并警告该实现可能会在未来的版本中删除,我们所能做的就是切换到Base64编码器的其他实现。我们可以为Base64编码器使用Commons Codec library。下面是一个示例:
1. Add Commons Codec library in classpath of your project
2. Add import statement for Base64 Class.
import org.apache.commons.codec.binary.Base64;
3. Encrypt your data
String testString = "Hello World";
byte[] encodedBytes = Base64.encodeBase64(testString.getBytes());
// Get encoded string
String encodedString = new String(encodedBytes);
// Get decoded string back
String decodedString = new String(Base64.decodeBase64(encodedBytes));
在使用Commons编解码库之后,您应该不会再看到上面的警告。
https://stackoverflow.com/questions/9399400
复制相似问题