⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 digestutil.java

📁 java 开发的邮件服务器平台。支持以下协议。 协议可以修改为自己的专门标识
💻 JAVA
字号:
/*********************************************************************** * Copyright (c) 2000-2004 The Apache Software Foundation.             * * All rights reserved.                                                * * ------------------------------------------------------------------- * * Licensed under the Apache License, Version 2.0 (the "License"); you * * may not use this file except in compliance with the License. You    * * may obtain a copy of the License at:                                * *                                                                     * *     http://www.apache.org/licenses/LICENSE-2.0                      * *                                                                     * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS,   * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or     * * implied.  See the License for the specific language governing       * * permissions and limitations under the License.                      * ***********************************************************************/package org.apache.james.security;import javax.mail.MessagingException;import javax.mail.internet.MimeUtility;import java.io.*;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Locale;/** * Computes and verifies digests of files and strings * * * @version $Revision: 1.6.4.3 $ */public class DigestUtil {    /**     * Command line interface. Use -help for arguments.     *     * @param args the arguments passed in on the command line     */    public static void main(String[] args) {        String alg = "SHA";        boolean file = false;            if (args.length == 0 || args.length > 4) {            printUsage();            return;        }            for (int i = 0; i < args.length; i++) {            String currArg = args[i].toLowerCase(Locale.US);            if (currArg.equals("-help")                || currArg.equals("-usage")) {                printUsage();                return;            }            if (currArg.equals("-alg")) {                alg = args[i+1];            }            if (currArg.equals("-file")) {                file = true;            }        }            if (file) {            digestFile(args[args.length - 1], alg);            return ;        } else {            try {                String hash = digestString(args[args.length - 1], alg);                System.out.println("Hash is: " + hash);                return;            } catch (NoSuchAlgorithmException nsae) {                System.out.println("No such algorithm available");            }        }    }    /**     * Print the command line usage string.     */    public static void printUsage() {        System.out.println("Usage: "                            + "java org.apache.james.security.DigestUtil"                           + " [-alg algorithm]"                           + " [-file] filename|string");    }    /**     * Calculate digest of given file with given algorithm.     * Writes digest to file named filename.algorithm .     *     * @param filename the String name of the file to be hashed     * @param algorithm the algorithm to be used to compute the digest     */    public static void digestFile(String filename, String algorithm) {        byte[] b = new byte[65536];        int count = 0;        int read = 0;        FileInputStream fis = null;        FileOutputStream fos = null;        try {            MessageDigest md = MessageDigest.getInstance(algorithm);            fis = new FileInputStream(filename);            while (fis.available() > 0) {                read =  fis.read(b);                md.update(b, 0, read);                count += read;            }            byte[] digest = md.digest();            StringBuffer fileNameBuffer =                new StringBuffer(128)                        .append(filename)                        .append(".")                        .append(algorithm);            fos = new FileOutputStream(fileNameBuffer.toString());            OutputStream encodedStream = MimeUtility.encode(fos, "base64");            encodedStream.write(digest);            fos.flush();        } catch (Exception e) {            System.out.println("Error computing Digest: " + e);        } finally {            try {                fis.close();                fos.close();            } catch (Exception ignored) {}        }    }    /**     * Calculate digest of given String using given algorithm.     * Encode digest in MIME-like base64.     *     * @param pass the String to be hashed     * @param algorithm the algorithm to be used     * @return String Base-64 encoding of digest     *     * @throws NoSuchAlgorithmException if the algorithm passed in cannot be found     */    public static String digestString(String pass, String algorithm )            throws NoSuchAlgorithmException  {        MessageDigest md;        ByteArrayOutputStream bos;        try {            md = MessageDigest.getInstance(algorithm);            byte[] digest = md.digest(pass.getBytes("iso-8859-1"));            bos = new ByteArrayOutputStream();            OutputStream encodedStream = MimeUtility.encode(bos, "base64");            encodedStream.write(digest);            return bos.toString("iso-8859-1");        } catch (IOException ioe) {            throw new RuntimeException("Fatal error: " + ioe);        } catch (MessagingException me) {            throw new RuntimeException("Fatal error: " + me);        }    }    /**     * Private constructor to prevent instantiation of the class     */    private DigestUtil() {}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -