栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MD5签署HttpServletResponse

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MD5签署HttpServletResponse

是的,那是可能的。您需要借助以下方法来修饰响应:在

HttpServletResponseWrapper
其中,您可以用
ServletOutputStream
自定义实现替换,该实现将字节写入MD5摘要和“原始”输出流。最后提供一个访问器以获得最终的MD5和。

更新 我只是为了好玩而已,下面是一个启动示例:

响应包装器:

public class MD5ServletResponse extends HttpServletResponseWrapper {    private final MD5ServletOutputStream output;    private final PrintWriter writer;    public MD5ServletResponse(HttpServletResponse response) throws IOException {        super(response);        output = new MD5ServletOutputStream(response.getOutputStream());        writer = new PrintWriter(output, true);    }    public PrintWriter getWriter() throws IOException {        return writer;    }    public ServletOutputStream getOutputStream() throws IOException {        return output;    }    public byte[] getHash() {        return output.getHash();    }}

MD5输出流:

public class MD5ServletOutputStream extends ServletOutputStream {    private final ServletOutputStream output;    private final MessageDigest md5;    {        try { md5 = MessageDigest.getInstance("MD5");        } catch (NoSuchAlgorithmException e) { throw new ExceptionInInitializerError(e);        }    }    public MD5ServletOutputStream(ServletOutputStream output) {        this.output = output;    }    public void write(int i) throws IOException {        byte[] b = { (byte) i };        md5.update(b);        output.write(b, 0, 1);    }    public byte[] getHash() {        return md5.digest();    }}

如何使用它:

// Wrap original response with it:MD5ServletResponse md5response = new MD5ServletResponse(response);// Now just use md5response instead or response, e.g.:dispatcher.handle(request, md5response);// Then get the hash, e.g.:byte[] hash = md5response.getHash();StringBuilder hashAsHexString = new StringBuilder(hash.length * 2);for (byte b : hash) {    hashAsHexString.append(String.format("%02x", b));}System.out.println(hashAsHexString); // Example af28cb895a479397f12083d1419d34e7.


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469984.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号