9

我有以下代码sun.misc.BASE64Encoder

BASE64Decoder decoder = new BASE64Decoder();
byte[] saltArray = decoder.decodeBuffer(saltD);
byte[] ciphertextArray = decoder.decodeBuffer(ciphertext);

并想将其转换为org.apache.commons.codec.binary.Base64. 我已经浏览了 API、文档等,但我找不到似乎匹配并给出相同结果值的东西。

4

3 回答 3

15

它实际上几乎完全相同:

Base64 decoder = new Base64();
byte[] saltArray = decoder.decode(saltD);
byte[] ciphertextArray = decoder.decode(ciphertext);

对于解码:

String saltString = encoder.encodeToString(salt);
String ciphertextString = encoder.encodeToString(ciphertext);

最后一个更难,因为你在最后使用了“toString”。

于 2013-04-16T08:37:30.343 回答
7

您可以使用decodeBase64(byte[] base64Data)decodeBase64(String base64String)方法。例如:

byte[] result = Base64.decodeBase64(base64);

这是一个简短的例子:

import java.io.IOException;
import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;

public class TestCodec {

    public static void main(String[] args) throws IOException {
        String test = "Test BASE64Encoder vs Base64";

//      String encoded = new BASE64Encoder().encode(test.getBytes("UTF-8"));
//      byte[] result = new BASE64Decoder().decodeBuffer(encoded);

        byte[] encoded = Base64.encodeBase64(test.getBytes("UTF-8"));
        byte[] result = Base64.decodeBase64(encoded);

        System.out.println(new String(result, "UTF-8"));
    }
}
于 2013-04-16T01:08:43.860 回答
4

代替这两个类(import sun.misc.BASE64Encoder; import sun.misc.BASE64Decoder),你可以使用java.util.Base64类。现在改变编码和解码方法如下。对于编码:

String ciphertextString =  Base64.getEncoder().encodeToString(ciphertext);

对于解码:

  final byte[] encryptedByteArray = Base64.getDecoder().decode(ciphertext);

这里 ciphertext 是 encoding method 中的编码密码。

现在一切都完成了,您可以保存程序并运行。它将运行而不会显示任何错误。

于 2017-03-14T14:19:28.070 回答