CAS实战(cas-server-3.3.4 + cas-client-3.1.3)二

 

DigestUtil.java

package org.kr.test.casTest.sha;

import java.io.ByteArrayOutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.util.Locale;

import javax.mail.MessagingException;

import javax.mail.internet.MimeUtility;

 

 

/**

 * Computes and verifies digests of files and strings

 *

 *

 * @version $Revision: 1.1 $

 */

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值