亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? digesters.java

?? 一個java開發的非常全面的關于證書發放
?? JAVA
字號:
/*
  Name:         Digesters.java
  Licensing:    LGPL

  API:          Sun (http://java.sun.com) JCE 1.2.2 API (cleanroom implementation by Bouncy Castle)
  Provider:     Bouncy Castle (http://www.bouncycastle.org)

  Disclaimer:

  COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND,
  EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE
  IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
  RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE
  PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR)
  ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY
  CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED
  HEREUNDER EXCEPT UNDER THIS DISCLAIMER.

  (C) Copyright 2003 Gert Van Ham
*/

package net.sourceforge.jcetaglib.lib;

import net.sourceforge.jcetaglib.exceptions.CryptoException;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.util.encoders.Base64;

import java.io.*;
import java.security.Key;
import java.security.MessageDigest;
import java.security.Security;

/**
 * Digest/hash routines for use with BouncyCastle JCE provider
 *
 * @author Gert Van Ham
 * @author hamgert@users.sourceforge.net
 * @author http://jcetaglib.sourceforge.net
 * @version $Id: Digesters.java,v 1.3 2004/04/15 07:28:25 hamgert Exp $
 */
public class Digesters {
    // buffersizes in bytes
    private static int BUFFERSIZE_TEXT = 64;
    private static int BUFFERSIZE_FILE = 8192;

    /**
     * Returns a message digest (hash) from a text
     *
     * @param text text to create message digest from
     * @param algorithm hash algorithm (e.g. "Tiger")
     * @return message digest in BASE64 format
     * @throws net.sourceforge.jcetaglib.exceptions.CryptoException encryption errors
     */
    public static StringBuffer hash(StringBuffer text
                                    , String algorithm)
            throws CryptoException {

        ByteArrayOutputStream bao = null;
        DataOutputStream dao = null;

        try {
            bao = new ByteArrayOutputStream();
            dao = new DataOutputStream(bao);

            // hash text
            hash(new ByteArrayInputStream(text.toString().getBytes()), dao, algorithm, BUFFERSIZE_TEXT);

            return new StringBuffer(new String(Base64.encode(bao.toByteArray())));
        } catch (IOException ioe) {
            ioe.printStackTrace();
            throw new CryptoException(ioe.getMessage());
        } finally {
            if (dao != null) {
                // close outputstream
                try {
                    dao.close();
                } catch (IOException e) {
                    ;
                }
            }
        }
    }

    /**
     *  Returns a message digest (hash) from a file
     *
     * @param file the filename/location
     * @param algorithm hash algorithm (e.g. "Tiger")
     * @return file digest in BASE64 format
     * @throws net.sourceforge.jcetaglib.exceptions.CryptoException encryption errors
     */
    public static StringBuffer hashFile(String file
                                        , String algorithm)
            throws CryptoException {

        FileInputStream fis = null;
        ByteArrayOutputStream bao = null;
        DataOutputStream dao = null;

        try {
            fis = new FileInputStream(file);
            bao = new ByteArrayOutputStream();
            dao = new DataOutputStream(bao);

            // hash file
            hash(fis, dao, algorithm, BUFFERSIZE_FILE);

            return new StringBuffer(new String(Base64.encode(bao.toByteArray())));

        } catch (IOException ioe) {
            ioe.printStackTrace();
            throw new CryptoException(ioe.getMessage());
        } finally {
            if (dao != null) {
                // close outputstream
                try {
                    dao.close();
                } catch (IOException e) {
                    ;
                }
            }
            if (fis != null) {
                // close outputstream
                try {
                    fis.close();
                } catch (IOException e) {
                    ;
                }
            }
        }
    }

    /**
     * Returns a message digest (hash) from an inputstream (one-way encryption)
     *
     * @param is any inputstream to hash
     * @param daos digest outputstream
     * @param algorithm hash algorithm (e.g. "Tiger")
     * @throws net.sourceforge.jcetaglib.exceptions.CryptoException encryption errors
     * @throws IOException I/O errors
     **/
    public static void hash(InputStream is
                            , DataOutputStream daos
                            , String algorithm
                            , int bufferlength)
            throws CryptoException, IOException {
        try {
            // Add Bouncy Castle provider
            Security.addProvider(new BouncyCastleProvider());

            MessageDigest digest = MessageDigest.getInstance(algorithm, "BC");

            byte[] buffer = new byte[bufferlength];
            int length = 0;

            // Read bytes into buffer and feed these bytes into the message
            // digest object.
            while ((length = is.read(buffer)) != -1) {
                digest.update(buffer, 0, length);
            }
            // Run the algorithm, so it produces the message digest.
            byte[] result = digest.digest();
            daos.write(result);
        } catch (IOException ioe) {
            ioe.printStackTrace();
            throw new IOException(ioe.getMessage());
        } catch (Exception ex) {
            ex.printStackTrace();
            throw new CryptoException(ex.getMessage());
        }
    }

    /**
     * Creates a form digest string (= return digest from a text appended to a symmetric key)
     *
     * @param text StringBuffer form string
     * @param digest String the digest/hash algorithm (e.g. MD5)
     * @param keyfile String the keystore file(name)
     * @param passphrase StringBuffer the passphrase for the keystore
     * @param algorithm String encryption algorithm (e.g. "Rijndael")
     * @return form digest in BASE64 format
     * @throws net.sourceforge.jcetaglib.exceptions.CryptoException encryption errors
     * @throws IOException I/O errors
     **/
    public static StringBuffer formDigest(StringBuffer text
                                          , String digest
                                          , String keyfile
                                          , StringBuffer passphrase
                                          , String algorithm)
            throws CryptoException, IOException {

        Key key = null;
        ByteArrayOutputStream outStr = null;
        DataOutputStream dataStr = null;

        try {
            Security.addProvider(new BouncyCastleProvider());

            // read secret key
            key = Keystore.loadKey(algorithm, keyfile, passphrase);

            // concatenate secret key & form text
            outStr = new ByteArrayOutputStream();
            dataStr = new DataOutputStream(outStr);

            dataStr.write(key.getEncoded());
            dataStr.writeBytes(text.toString());

            // create hash from the concatenated string
            return hash(new StringBuffer(outStr.toString()), digest);
        } catch (IOException ioe) {
            ioe.printStackTrace();
            throw new IOException(ioe.getMessage());
        } catch (Exception ex) {
            ex.printStackTrace();
            throw new CryptoException(ex.getMessage());
        } finally {
            if (dataStr != null) {
                // close outputstream
                try {
                    dataStr.close();
                } catch (IOException e) {
                    ;
                }
            }
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一二区| www.亚洲色图| 国产成人一级电影| 欧美午夜精品电影| 国产精品毛片久久久久久| 午夜精品一区二区三区三上悠亚| 成人精品国产一区二区4080| 欧美一区二区三区四区五区| 亚洲另类中文字| 国产成人精品免费| 精品日本一线二线三线不卡| 亚洲成a天堂v人片| 91天堂素人约啪| 久久久精品国产免费观看同学| 日韩影院在线观看| 欧美性猛交xxxx黑人交| 亚洲黄色av一区| 99精品黄色片免费大全| 国产欧美一区二区精品婷婷| 精彩视频一区二区三区| 91精品国产综合久久久蜜臀粉嫩| 亚洲永久精品大片| 欧美亚洲综合久久| 亚洲妇女屁股眼交7| 91网站最新网址| 亚洲欧美激情一区二区| 91亚洲精品久久久蜜桃| 亚洲天堂av老司机| 91色婷婷久久久久合中文| 国产精品久久久久久久蜜臀| 国产精品1区2区| 欧美激情一区在线| 99热这里都是精品| 亚洲精品免费电影| 在线观看日韩精品| 午夜精品成人在线| 日韩欧美一二区| 国产一区二区三区在线观看免费 | 91国偷自产一区二区三区观看| 国产精品女同互慰在线看| 成人毛片老司机大片| 亚洲欧洲三级电影| 在线免费视频一区二区| 亚洲国产乱码最新视频| 欧美日韩国产一级| 美女mm1313爽爽久久久蜜臀| 久久综合999| 不卡av免费在线观看| 亚洲一区二区三区四区在线观看 | 久久久久久久久久久久电影| 国产成人午夜99999| 中文字幕亚洲精品在线观看| 一本一本大道香蕉久在线精品 | 亚洲欧美日韩中文播放| 欧美无砖砖区免费| 国内外成人在线视频| 日本一区二区三区四区在线视频| 成人国产精品免费观看| 亚洲午夜羞羞片| 欧美成人性战久久| 91美女精品福利| 日韩—二三区免费观看av| 久久精品免费在线观看| 欧美最新大片在线看| 国产成人在线观看免费网站| 国产精品成人一区二区三区夜夜夜 | 色国产精品一区在线观看| 亚洲va欧美va人人爽| 久久免费电影网| 欧美吞精做爰啪啪高潮| 国产成人免费在线| 天天色图综合网| 中文字幕在线不卡视频| 欧美精品在线观看播放| 成人免费看黄yyy456| 亚洲成人三级小说| 国产精品网站在线播放| 欧美一区二区视频网站| 国产成人av资源| 日韩精品午夜视频| 亚洲日穴在线视频| 久久久久国产精品人| 69堂成人精品免费视频| 99精品国产视频| 国产成人免费在线观看不卡| 日韩成人av影视| 一区二区日韩av| 日本一区二区三区在线观看| 日韩一区二区在线观看视频| 91黄色免费版| 成人av手机在线观看| 国模大尺度一区二区三区| 午夜久久久久久久久久一区二区| 亚洲日本丝袜连裤袜办公室| 欧美激情一区二区三区全黄| 精品久久久久久久久久久院品网| 欧美日韩国产一级片| 色噜噜狠狠色综合中国| 99久久99久久精品国产片果冻| 极品美女销魂一区二区三区 | 国产精品1024久久| 激情综合色综合久久| 日韩黄色一级片| 亚洲国产一区视频| 一区二区日韩电影| 亚洲一区二区成人在线观看| 亚洲三级免费观看| 中文字幕亚洲不卡| 亚洲欧美一区二区在线观看| 国产色一区二区| 中文一区在线播放| 国产精品拍天天在线| 国产亚洲欧美日韩日本| 久久久久久久久久看片| 久久精品一区二区| 中文字幕乱码久久午夜不卡 | 久久久美女毛片| 久久精品一区二区三区不卡牛牛| 久久久久久久国产精品影院| 久久精品视频一区| 国产日韩欧美a| 国产精品久久久久精k8| 亚洲欧美日韩一区二区| 亚洲一二三级电影| 日韩高清一区在线| 久久99精品视频| 国产不卡视频一区| av在线播放成人| 欧美人狂配大交3d怪物一区| 欧美一区二区视频免费观看| 久久人人97超碰com| 中文字幕av一区二区三区| 亚洲美腿欧美偷拍| 日产欧产美韩系列久久99| 国产在线观看一区二区| 波多野结衣亚洲一区| 在线视频观看一区| 欧美成人性福生活免费看| 国产日韩av一区| 亚洲精品国产第一综合99久久 | 床上的激情91.| 91福利国产精品| 欧美一区二区视频在线观看2022| 久久先锋资源网| 一区二区三区四区精品在线视频| 亚洲成人av中文| 国产99久久久国产精品潘金网站| 色菇凉天天综合网| 欧美成人bangbros| 亚洲人精品一区| 日韩国产高清在线| 成人18精品视频| 日韩午夜av电影| 亚洲男人电影天堂| 国产一区二区伦理| 欧美三级电影网| 国产精品久久久久aaaa| 蜜臀久久久99精品久久久久久| 成人福利视频网站| 日韩一区国产二区欧美三区| 18成人在线观看| 久久99精品国产麻豆婷婷洗澡| av电影天堂一区二区在线| 日韩一区二区视频| 亚洲精品菠萝久久久久久久| 国产麻豆精品视频| 91精品国产aⅴ一区二区| 亚洲色图在线视频| 国产激情偷乱视频一区二区三区| 91麻豆精品国产91久久久使用方法 | 欧美日韩国产成人在线91| 国产精品久久久久久久裸模 | av亚洲精华国产精华精| 日韩欧美高清dvd碟片| 亚洲一区视频在线| 99精品久久99久久久久| 国产亚洲欧美日韩俺去了| 免费观看日韩av| 3d成人h动漫网站入口| 夜夜爽夜夜爽精品视频| 99久久夜色精品国产网站| 久久品道一品道久久精品| 日韩精品乱码免费| 欧美日韩久久一区二区| 一区二区三区在线影院| 91亚洲永久精品| 中文字幕日本不卡| 不卡的电影网站| 国产精品久久久久久久久果冻传媒 | 在线观看视频一区二区欧美日韩| 国产精品色噜噜| av激情亚洲男人天堂| 欧美国产在线观看| 国产成人综合自拍| 国产农村妇女毛片精品久久麻豆| 九一九一国产精品| 久久青草欧美一区二区三区| 国产另类ts人妖一区二区| 久久精品人人做人人综合| 国产成人精品三级|