java - 使用 apache commons 编码

标签 java

我正在尝试改变这个专有的

private String getSecWebSocketAccept(String secKey) 
    throws UnsupportedEncodingException, NoSuchAlgorithmException {
    String guid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
    secKey += guid;
    MessageDigest md = MessageDigest.getInstance("SHA-1");
    md.update(secKey.getBytes("ISO-8859-1"), 0, secKey.length());
    byte[] shalHash = md.digest();
    BASE64Encoder encoder = new BASE64Encoder();
    return encoder.encode(shalHash);
}

编码为apache版本

org.apache.commons.codec.binary.Base64

但是当我尝试时它根本不起作用

private String getSecWebSocketAccept(String secKey) 
    throws UnsupportedEncodingException, NoSuchAlgorithmException {
    String guid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
    secKey += guid;
    MessageDigest md = MessageDigest.getInstance("SHA-1");
    md.update(secKey.getBytes("ISO-8859-1"), 0, secKey.length());
    byte[] shalHash = md.digest();
    org.apache.commons.codec.binary.Base64.encodeBase64 encoder = new org.apache.commons.codec.binary.Base64.encodeBase64();
    return encoder.encode(shalHash);
}

这是我得到的错误

C:\xampp\htdocs\html>javac SimpleServer.java
SimpleServer.java:87: error: cannot find symbol
                org.apache.commons.codec.binary.Base64.encodeBase64 encoder = ne
w org.apache.commons.codec.binary.Base64.encodeBase64();
                                                      ^
  symbol:   class encodeBase64
  location: class Base64
SimpleServer.java:87: error: cannot find symbol
                org.apache.commons.codec.binary.Base64.encodeBase64 encoder = ne
w org.apache.commons.codec.binary.Base64.encodeBase64();

                                        ^
  symbol:   class encodeBase64
  location: class Base64
2 errors

最佳答案

org.apache.commons.codec.binary.Base64.encodeBase64是一个静态方法。像这样使用它:

byte[] encoded = Base64.encodeBase64(shalHash);

此外,您可以使用 org.apache.commons.codec.digest.DigestUtils.sha1(byte[] data) :

byte[] shalHash = DigestUtil.sha1(secKey.getBytes("ISO-8859-1"));

关于java - 使用 apache commons 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16936092/

相关文章:

java - 获取面板坐标

java - 是否可以用 selenium 模拟键盘行为?

java - JAXB UnmarshallException 意外元素,但 "Expected elements are (none)"

java - 构建 Beta 站点以镜像生产站点

java - 生成随机 API key ,提供了 2 种方法,有什么区别吗?

java:如何查找初始值为零并出现错误 "/by zero"的值

java - 更新几个jenkins插件后服务无法工作

java - 通过 JSMPP 发送的短信未保存在手机上 - 仅 "push"

java - 在 Java 中使用 Double 与 BigDecimal 解析 double 值

java - 打开 session 查看并提交事务