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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? signatures.java

?? 一個(gè)java開發(fā)的非常全面的關(guān)于證書發(fā)放
?? JAVA
字號(hào):
/*
  Name:         Signatures.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.PrivateKey;
import java.security.PublicKey;
import java.security.Security;
import java.security.Signature;

/**
 * Create and verify SIGs (Signatures) with the BouncyCastle JCE provider
 *
 * @author Gert Van Ham
 * @author hamgert@users.sourceforge.net
 * @author http://jcetaglib.sourceforge.net
 * @version $Id: Signatures.java,v 1.3 2004/04/15 07:28:25 hamgert Exp $
 */
public class Signatures {
    // buffersizes in bytes
    private static int BUFFERSIZE_TEXT = 64;
    private static int BUFFERSIZE_FILE = 8192;

    /**
     * Generates and returns a SIG (Signature) from a text
     *
     * @param text text to create SIG from
     * @param signingKey the signing key
     * @param signame Signature algorithm (e.g. RIPEMD160WithRSA/ISO9796-2)
     * @return SIG in BASE64 format
     * @throws CryptoException for all encryption errors
     */
    public static StringBuffer generateSIG(StringBuffer text
                                           , PrivateKey signingKey
                                           , String signame)
            throws CryptoException {

        ByteArrayOutputStream bao = null;
        DataOutputStream dao = null;

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

            // Create MAC
            generateSIG(new ByteArrayInputStream(text.toString().getBytes()), dao, signingKey, signame, 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) {
                    ;
                }
            }
        }
    }

    /**
     * Generates and returns a SIG (Signature) from a file
     *
     * @param file file to create SIG from
     * @param signingKey the signing key
     * @param signame Signature algorithm (e.g. RIPEMD160WithRSA/ISO9796-2)
     * @return SIG in BASE64 format
     * @throws CryptoException for all encryption errors
     */
    public static StringBuffer generateFileSIG(String file
                                               , PrivateKey signingKey
                                               , String signame)
            throws CryptoException {

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

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

            // generate mac
            generateSIG(fis, dao, signingKey, signame, 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) {
                    ;
                }
            }
        }
    }

    /**
     * Generates and returns a SIG (Signature) from any inputstream
     *
     * @param is inputstream to generate SIG from
     * @param daos returns SIG code outputstream
     * @param signingKey the signing key
     * @param signame Signature algorithm (e.g. RIPEMD160WithRSA/ISO9796-2)
     * @throws IOException I/O errors
     * @throws CryptoException for all encryption errors
     **/
    public static void generateSIG(InputStream is
                                   , DataOutputStream daos
                                   , PrivateKey signingKey
                                   , String signame
                                   , int bufferlength)
            throws CryptoException, IOException {

        Signature sig = null;

        try {
            // Add Bouncy Castle provider
            Security.addProvider(new BouncyCastleProvider());

            sig = Signature.getInstance(signame, "BC");
            sig.initSign(signingKey);

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

            // Read bytes into buffer
            while ((length = is.read(buffer)) != -1) {
                sig.update(buffer, 0, length);
            }

            byte[] result = sig.sign();
            daos.write(result);
        } catch (IOException ioe) {
            ioe.printStackTrace();
            throw new IOException(ioe.getMessage());
        } catch (Exception ex) {
            ex.printStackTrace();
            throw new CryptoException(ex.getMessage());
        }
    }

    /**
     * Verifies a signature from a text
     *
     * @param text text to verify
     * @param signature the signature (in BASE64 format)
     * @param verifyKey the verification key
     * @param signame Signature algorithm (e.g. RIPEMD160WithRSA/ISO9796-2)
     * @return true (verified) or false (invalid)
     * @throws CryptoException for encryption errors
     */
    public static boolean verifySIG(StringBuffer text
                                    , StringBuffer signature
                                    , PublicKey verifyKey
                                    , String signame)
            throws CryptoException {

        try {
            // Verify SIG
            return verifySIG(new ByteArrayInputStream(text.toString().getBytes()), signature, verifyKey, signame, BUFFERSIZE_TEXT);

        } catch (IOException ioe) {
            ioe.printStackTrace();
            throw new CryptoException(ioe.getMessage());
        }
    }

    /**
     * Verifies a signature from a file
     *
     * @param file file to verify
     * @param signature the signature (in BASE64 format)
     * @param verifyKey the verification key
     * @param signame Signature algorithm (e.g. RIPEMD160WithRSA/ISO9796-2)
     * @return true (verified) or false (invalid)
     * @throws CryptoException for encryption errors
     */
    public static boolean verifyFileSIG(String file
                                        , StringBuffer signature
                                        , PublicKey verifyKey
                                        , String signame)
            throws CryptoException {

        FileInputStream fis = null;

        try {
            fis = new FileInputStream(file);

            // verify SIG
            return verifySIG(fis, signature, verifyKey, signame, BUFFERSIZE_FILE);

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

    /**
     * Verifies a signature from any inputstream
     *
     * @param is inputstream to verify
     * @param signature the signature (in BASE64 format)
     * @param verifyKey the verification key
     * @param signame Signature algorithm (e.g. RIPEMD160WithRSA/ISO9796-2)
     * @param bufferlength buffer length in bytes
     * @return true (verified) or false (invalid)
     * @throws IOException I/O errors
     * @throws CryptoException for all encryption errors
     **/
    public static boolean verifySIG(InputStream is
                                    , StringBuffer signature
                                    , PublicKey verifyKey
                                    , String signame
                                    , int bufferlength)
            throws CryptoException, IOException {
        try {
            // Add Bouncy Castle provider
            Security.addProvider(new BouncyCastleProvider());

            Signature sig = Signature.getInstance(signame, "BC");
            byte[] sigBytes = Base64.decode(signature.toString());

            sig.initVerify(verifyKey);
            byte[] buffer = new byte[bufferlength];
            int length = 0;

            // Read bytes into buffer
            while ((length = is.read(buffer)) != -1) {
                sig.update(buffer, 0, length);
            }

            if (!sig.verify(sigBytes)) {
                return false;
            } else {
                return true;
            }
        } catch (IOException ioe) {
            ioe.printStackTrace();
            throw new IOException(ioe.getMessage());
        } catch (Exception ex) {
            ex.printStackTrace();
            throw new CryptoException(ex.getMessage());
        }
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区在线观看视频| 91在线丨porny丨国产| 亚洲成av人在线观看| 日日夜夜精品视频免费| 国产99久久久国产精品潘金| 成人av电影免费观看| 这里是久久伊人| 日韩免费看的电影| 亚洲人xxxx| 久久99精品一区二区三区| 99热这里都是精品| 欧美精品一区二区精品网| 136国产福利精品导航| 美国毛片一区二区三区| av成人动漫在线观看| 一区二区三区四区高清精品免费观看 | 亚洲一区在线电影| 成人性生交大片免费看视频在线| 欧美精品乱码久久久久久| 国产日韩高清在线| 视频精品一区二区| 久久夜色精品一区| 日本女人一区二区三区| 91精品1区2区| 国产精品国产精品国产专区不片| 九九在线精品视频| 国产精品久久久久久久岛一牛影视| 在线观看日韩高清av| 国产精品网友自拍| 国产精品一区二区x88av| 精品久久久久久久人人人人传媒| 午夜精品成人在线视频| 欧美无砖专区一中文字| 亚洲曰韩产成在线| 久久久久久久久久电影| 狠狠色狠狠色综合| 国产亚洲精品7777| 成人一区二区在线观看| 日日嗨av一区二区三区四区| 国产欧美日韩在线看| 欧美视频三区在线播放| 成人免费视频视频在线观看免费| 五月激情综合婷婷| 亚洲天堂网中文字| 欧美午夜精品电影| www.性欧美| 免费黄网站欧美| 337p日本欧洲亚洲大胆精品 | 久久久久国产精品免费免费搜索| 欧美在线观看一二区| 国产成人综合在线观看| 中文av一区二区| 日韩一区二区在线观看| 韩国毛片一区二区三区| 亚洲国产精品精华液网站| 欧美日韩国产大片| 麻豆精品一区二区三区| 亚洲妇女屁股眼交7| 国产精品久久久久久久久免费相片| 91麻豆精品国产91久久久资源速度 | 婷婷开心久久网| 亚洲乱码国产乱码精品精可以看| 在线视频亚洲一区| 成人动漫av在线| 国产精品一区二区免费不卡| 久久精品国产第一区二区三区| 欧美岛国在线观看| 欧美绝品在线观看成人午夜影视| 一本色道久久加勒比精品| 亚洲国产欧美一区二区三区丁香婷| 国产精品欧美一区二区三区| 久久久久国色av免费看影院| 欧美xxxx老人做受| 欧美videossexotv100| 日韩精品中午字幕| 日韩一区国产二区欧美三区| 欧美一区二区网站| 成人网男人的天堂| 成人免费观看视频| www.亚洲人| 色欧美日韩亚洲| 色天天综合久久久久综合片| 91亚洲午夜精品久久久久久| 天堂影院一区二区| 天天综合日日夜夜精品| 日韩av一区二| 六月丁香婷婷久久| 国产在线精品视频| 国产成人精品影院| av中文字幕在线不卡| 91在线精品秘密一区二区| 色综合一个色综合亚洲| 奇米色一区二区| 免费的国产精品| 国产激情一区二区三区| 风流少妇一区二区| 99精品欧美一区二区蜜桃免费| 一本久道久久综合中文字幕| 色欲综合视频天天天| 91精品办公室少妇高潮对白| 在线不卡欧美精品一区二区三区| 欧美一级一区二区| 欧美国产日韩一二三区| 日韩一级高清毛片| 国产日韩欧美综合一区| 亚洲人成小说网站色在线| 亚洲综合精品久久| 精品一区二区三区在线视频| 国产丶欧美丶日本不卡视频| 91性感美女视频| 欧美裸体一区二区三区| 久久伊99综合婷婷久久伊| 亚洲少妇最新在线视频| 日韩二区在线观看| 国产成人av一区二区三区在线 | 亚洲国产综合在线| 国产老肥熟一区二区三区| 91日韩一区二区三区| 日韩视频免费直播| 自拍偷在线精品自拍偷无码专区| 天天影视涩香欲综合网| 成人午夜激情视频| 91精品一区二区三区在线观看| 久久久亚洲精品石原莉奈| 亚洲伊人色欲综合网| 国产精品99久久久久久似苏梦涵| 在线区一区二视频| 久久精品夜色噜噜亚洲a∨| 亚洲一区中文日韩| 国产999精品久久| 宅男在线国产精品| 亚洲欧美一区二区三区久本道91| 日本麻豆一区二区三区视频| 99v久久综合狠狠综合久久| 日韩欧美不卡一区| 亚洲图片欧美色图| 成人国产精品免费网站| 欧美成人福利视频| 手机精品视频在线观看| 99久久夜色精品国产网站| 精品国产电影一区二区| 亚洲第一搞黄网站| 91色porny蝌蚪| 中文字幕av资源一区| 六月婷婷色综合| 在线不卡a资源高清| 亚洲麻豆国产自偷在线| 成人综合在线观看| 亚洲精品一区二区三区影院| 午夜电影久久久| 91成人免费在线| 亚洲欧美另类久久久精品| 成人免费的视频| 久久这里都是精品| 久久er99精品| 91精品国产综合久久小美女| 亚洲精品美国一| 色综合视频一区二区三区高清| 中文字幕一区二区三区四区不卡 | 91尤物视频在线观看| 亚洲国产高清不卡| 福利91精品一区二区三区| 日本一区二区三区在线不卡| 国产成人a级片| 中文字幕av一区二区三区高 | 日本欧美久久久久免费播放网| 在线播放91灌醉迷j高跟美女| 亚洲小说欧美激情另类| 欧美日韩综合不卡| 欧美xfplay| 男男视频亚洲欧美| 91精品国产免费| 天天av天天翘天天综合网| 91精品国产麻豆国产自产在线| 欧美另类一区二区三区| 伊人一区二区三区| 99九九99九九九视频精品| 欧美久久高跟鞋激| 亚洲va欧美va国产va天堂影院| 一本大道av一区二区在线播放| 亚洲精品在线网站| 亚洲最快最全在线视频| 色综合中文字幕| 亚洲一区二区欧美激情| 欧美日韩激情一区二区三区| 亚洲成a人v欧美综合天堂| 欧美日韩免费视频| 亚洲第一搞黄网站| 欧美xxxx在线观看| 国产精品一区二区91| 久久精品夜色噜噜亚洲a∨| 午夜亚洲福利老司机| 日韩欧美二区三区| 国内外精品视频| 日本一区二区免费在线观看视频 | 樱花影视一区二区| 欧美日本韩国一区| 精品一区二区三区免费播放| 欧美xxxxxxxxx| 色综合久久综合|