首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MessageDigest的update方法是做什么的,BASE64Encoder是做什么用的?

MessageDigest的update方法是做什么的,BASE64Encoder是做什么用的?
EN

Stack Overflow用户
提问于 2012-02-23 01:01:35
回答 3查看 17K关注 0票数 8

以下是将加密用户字符串的代码:

代码语言:javascript
复制
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);
      }
}
}

当我编译代码时,我得到以下警告:

代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

发布于 2012-02-23 01:22:54

Stack Overflow用户

发布于 2017-02-11 01:16:21

而这里的旧帖子是一个更新的答案。Java8的Base64。

Java 8 Base64 Documents

票数 2
EN

Stack Overflow用户

发布于 2012-08-14 14:23:19

对于Base64加密和解密,此警告明确表示它不鼓励使用Base64Encoder的Sun实现,并警告该实现可能会在未来的版本中删除,我们所能做的就是切换到Base64编码器的其他实现。我们可以为Base64编码器使用Commons Codec library。下面是一个示例:

代码语言:javascript
复制
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编解码库之后,您应该不会再看到上面的警告。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9399400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档