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

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

?? hybrid.java

?? 一個java開發的非常全面的關于證書發放
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
/*
  Name:         Hybrid.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 net.sourceforge.jcetaglib.exceptions.HeaderException;
import net.sourceforge.jcetaglib.exceptions.InvalidHMACException;
import net.sourceforge.jcetaglib.exceptions.InvalidSignatureException;
import net.sourceforge.jcetaglib.tools.*;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.util.encoders.Base64;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.io.*;
import java.security.*;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;

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

    static final int FILE_HEADER = 0x7e01;  // File header.
    static final int DATA_BLOCK = 1; // Data block
    static final int FINAL_DATA_BLOCK = 2; // Final data block.
    static final int HMAC_BLOCK = 3; // HMAC block
    static final int SIG_BLOCK = 3; // Signature block
    static final int CERT_BLOCK = 4; // Certificate block.
    static final int KEY_BLOCK = 16; // Keystore block
    static final int IV_BLOCK = 17; // IV block
    static final int LOCK_BLOCK = 18; // Locking block
    static final int HMAC_KEY_BLOCK = 18;

    /**
     * Encrypts text with an HMAC
     *
     * @param text text to encrypt
     * @param receiverKey the receiver's public key for encrypting the symmetric key
     * @param algorithm encryption algorithm (e.g. "Rijndael")
     * @param seed seed for SecureRandom (optional)
     * @param strength the keysize in bits (e.g. 128)
     * @param mode encryption mode (e.g. "CBC")
     * @param padding padding scheme (e.g."PKCS7Padding")
     * @return encrypted string in BASE64 format
     * @throws CryptoException encryption errors
     **/
    public static StringBuffer encryptWithHMAC(StringBuffer text
                                               , PublicKey receiverKey
                                               , String algorithm
                                               , byte[] seed
                                               , int strength
                                               , String mode
                                               , String padding) throws CryptoException {

        ByteArrayOutputStream bao = null;
        DataOutputStream dao = null;

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

            // encrypt text with HMAC
            encryptWithHMAC(new ByteArrayInputStream(text.toString().getBytes()), dao, receiverKey, algorithm, seed, strength, mode, padding, 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) {
                    ;
                }
            }
        }
    }

    /**
     * Encrypts file with an HMAC
     *
     * @param file file to encrypt
     * @param newfile encrypted file
     * @param receiverKey the receiver's public key for encrypting the symmetric key
     * @param algorithm encryption algorithm (e.g. "Rijndael")
     * @param seed seed for SecureRandom (optional)
     * @param strength the keysize in bits (e.g. 128)
     * @param mode encryption mode (e.g. "CBC")
     * @param padding padding scheme (e.g."PKCS7Padding")
     * @throws CryptoException encryption errors
     * @throws IOException I/O errors
     **/
    public static void encryptFileWithHMAC(String file
                                           , String newfile
                                           , PublicKey receiverKey
                                           , String algorithm
                                           , byte[] seed
                                           , int strength
                                           , String mode
                                           , String padding) throws CryptoException, IOException {

        FileInputStream fis = null;
        FileOutputStream fos = null;
        DataOutputStream dao = null;

        try {
            fis = new FileInputStream(file);

            fos = new FileOutputStream(newfile);
            dao = new DataOutputStream(fos);

            // encrypt file
            encryptWithHMAC(fis, dao, receiverKey, algorithm, seed, strength, mode, padding, BUFFERSIZE_FILE);

        } catch (IOException ioe) {
            ioe.printStackTrace();
            throw new IOException(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) {
                    ;
                }
            }
        }
    }

    /**
     * Encrypts any inputstream with an HMAC
     *
     * @param is inputstream to encrypt
     * @param daos outputstream to store the encrypted data
     * @param receiverKey the receiver's public key for encrypting the symmetric key
     * @param algorithm encryption algorithm (e.g. "Rijndael")
     * @param seed seed for SecureRandom (optional)
     * @param strength the keysize in bits (e.g. 128)
     * @param mode encryption mode (e.g. "CBC")
     * @param padding padding scheme (e.g."PKCS7Padding")
     * @param bufferlength buffer length in bytes
     * @throws CryptoException encryption errors
     * @throws IOException I/O errors
     **/
    public static void encryptWithHMAC(InputStream is
                                       , DataOutputStream daos
                                       , PublicKey receiverKey
                                       , String algorithm
                                       , byte[] seed
                                       , int strength
                                       , String mode
                                       , String padding
                                       , int bufferlength)
            throws CryptoException, IOException {

        MacOutputStream macStr = null;
        DataOutputStream dataStr = null;

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

            SecureRandom secRand = Seed.getSecureRandom(seed);

            // Generate symmetric key
            KeyGenerator keyGen = KeyGenerator.getInstance(algorithm, "BC");
            keyGen.init(strength, secRand);
            Key symKey = keyGen.generateKey();

            // Instantiate Symmetric cipher for encryption.
            Cipher outputCipher = Cipher.getInstance(algorithm + "/" + mode + "/" + padding, "BC");
            outputCipher.init(Cipher.ENCRYPT_MODE, symKey, secRand);

            // Get key and IV for cipher so that they can be later
            // encrypted to build a header.
            byte[] keyEnc = symKey.getEncoded();
            byte[] keyIV = outputCipher.getIV();

            // Setup HMAC
            Mac mac = Mac.getInstance("HMACSHA1", "BC");

            byte[] macKeyBytes = new byte[20]; // Set to correct length for HMACSHA1
            secRand.nextBytes(macKeyBytes); // Fill with random data,

            Key macKey = new SecretKeySpec(macKeyBytes, "HMACSHA1");
            mac.init(macKey); // Initialize.

            // Setup RSA to encrypt secrets.
            Cipher rsaEng = Cipher.getInstance("RSA/None/OAEPPadding", "BC");
            rsaEng.init(Cipher.ENCRYPT_MODE, receiverKey, secRand);

            // Setup to process MAC
            macStr = new MacOutputStream(daos, mac);
            dataStr = new DataOutputStream(macStr);

            // Form HEADER for the encrypted string
            dataStr.writeShort(FILE_HEADER); // Write a file or string header.

            // Write out a block for the key of the cipher.
            dataStr.writeShort(KEY_BLOCK); // Block header.
            byte[] tmp = rsaEng.doFinal(keyEnc); // Encrypt it with RSA.
            dataStr.writeInt(tmp.length); // Write length.
            dataStr.write(tmp); // Write data.
            Clean.blank(tmp); // Erase tmp array.

            // Write out IV block
            dataStr.writeShort(IV_BLOCK);  // Block header
            tmp = rsaEng.doFinal(keyIV); // Encrypt with RSA.
            dataStr.writeInt(tmp.length); // Write length.
            dataStr.write(tmp); // Write data.
            Clean.blank(tmp); // Erase tmp array.

            // Write out key for HMAC.
            dataStr.writeShort(HMAC_KEY_BLOCK); // Write header.
            tmp = outputCipher.doFinal(macKey.getEncoded()); // Encrypt
            dataStr.writeInt(tmp.length); // Write length.
            dataStr.write(tmp); // Write data.
            Clean.blank(tmp); // Erase tmp array.

            // Reset cipher back to original
            //outputCipher.init(Cipher.ENCRYPT_MODE,symKey,new IvParameterSpec(keyIV)); // initialize with aes_key.

            // Encrypt the message
            int l = 0; // Universal length variable.
            byte[] buf = new byte[bufferlength]; // A buffer to work in.
            byte[] out = null; // Output buffer.

            // Read while length is > -1
            while ((l = is.read(buf)) > -1) {
                out = outputCipher.update(buf, 0, l); // Encrypt data.
                if (out != null) {
                    dataStr.writeShort(DATA_BLOCK); // Write data block header.
                    dataStr.writeInt(out.length); // Write length.
                    dataStr.write(out); // Write encrypted data.
                }
            }

            // This is the last block
            out = outputCipher.doFinal(); // Do final encryption.
            dataStr.writeShort(FINAL_DATA_BLOCK); // Write header.
            dataStr.writeInt(out.length); // Write length.
            dataStr.write(out); // Write Data.

            Clean.blank(buf); // Clear buffer.
            buf = null; // Set Null

            // Write out MAC block
            dataStr.writeShort(HMAC_BLOCK); // Write Header.
            dataStr.flush(); // Flush it..

            tmp = mac.doFinal(); // Get MAC code.
            dataStr.writeInt(tmp.length); // Write length.
            dataStr.write(tmp); // Write data.
            Clean.blank(tmp); // Clear.
        } catch (IOException ioe) {
            ioe.printStackTrace();
            throw new IOException(ioe.getMessage());
        } catch (Exception ex) {
            ex.printStackTrace();
            throw new CryptoException(ex.getMessage());
        } finally {
            if (dataStr != null) {
                try {
                    dataStr.close();
                } catch (IOException ioe) {
                    ;
                }
            }
        }
    }

    /**
     * Decrypts and verifies text with HMAC
     *
     * @param text the text to decrypt
     * @param privKey the receiver's private key for decryption
     * @param algorithm encryption algorithm (e.g. "Rijndael")
     * @param mode encryption mode (e.g. "CBC")

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆国产福利精品| 日本精品裸体写真集在线观看| 国产亚洲综合av| 欧美伦理电影网| 在线视频欧美精品| 91香蕉视频在线| 欧美大白屁股肥臀xxxxxx| 久久国产精品色| 丝袜美腿亚洲一区| 亚洲第一激情av| 亚洲高清不卡在线| 亚洲成国产人片在线观看| 懂色中文一区二区在线播放| 国产成人午夜99999| 成人午夜大片免费观看| 成人黄色综合网站| 91美女福利视频| 中文一区一区三区高中清不卡| 综合欧美亚洲日本| 樱桃国产成人精品视频| 亚洲小说春色综合另类电影| 91亚洲精华国产精华精华液| 国产精品免费网站在线观看| 一区二区在线观看免费| 丁香婷婷综合五月| 久久嫩草精品久久久精品一| 国产午夜精品久久久久久久| 久久国产尿小便嘘嘘尿| 4438成人网| 日本一区二区视频在线观看| 亚洲人成精品久久久久| 视频一区二区国产| 欧美日韩高清影院| 国产日韩精品一区| 成人动漫视频在线| 国产精品网曝门| www.欧美亚洲| 欧美一区二区三区不卡| 综合分类小说区另类春色亚洲小说欧美| 国产电影一区二区三区| 中文字幕 久热精品 视频在线 | 国产精品香蕉一区二区三区| 91网上在线视频| 亚洲美女电影在线| 欧美午夜精品久久久久久孕妇| 久久这里都是精品| 午夜欧美在线一二页| 国产成人亚洲综合色影视| 国产欧美日韩麻豆91| 成人av电影观看| 亚洲综合图片区| av在线不卡网| 亚洲一区二区三区国产| 欧美一区三区四区| 国产一区不卡在线| 精品黑人一区二区三区久久| 亚洲成人av一区| 精品国产麻豆免费人成网站| 成人天堂资源www在线| 一区二区在线电影| 国产精品综合久久| 亚洲欧美一区二区三区国产精品 | 91麻豆高清视频| 亚洲成人精品影院| 久久久99精品免费观看| 欧美色中文字幕| 精品一区二区三区不卡| 91精品黄色片免费大全| 国产一区在线看| 亚洲一区二区三区三| 亚洲精品在线三区| 在线一区二区三区四区五区| 久久国产精品区| 亚洲靠逼com| 国产欧美一区二区精品秋霞影院| 欧美在线看片a免费观看| 国产在线精品国自产拍免费| 亚洲一二三四久久| 国产亚洲一区二区在线观看| 欧美日韩免费电影| av在线免费不卡| 国产精品1024| 秋霞电影一区二区| 一本色道久久综合狠狠躁的推荐| 欧美激情一区三区| 911精品国产一区二区在线| 成人av在线一区二区| 男人操女人的视频在线观看欧美| 国产精品传媒入口麻豆| av电影在线不卡| 国产在线播精品第三| 日韩专区一卡二卡| 洋洋成人永久网站入口| 欧美国产精品中文字幕| 精品国产乱子伦一区| 91精品国产色综合久久| 欧美视频精品在线观看| 成av人片一区二区| 成人美女视频在线观看| 韩国三级电影一区二区| 国产精品乱码人人做人人爱| 精品久久久久久久久久久久久久久久久| 日本道色综合久久| 91污在线观看| 成人av在线播放网站| 国产成人免费av在线| 国内精品久久久久影院薰衣草 | 国产精品狼人久久影院观看方式| 欧美成人精品二区三区99精品| 欧美日韩精品一区二区天天拍小说| 色域天天综合网| 91色婷婷久久久久合中文| 国产成人精品免费在线| 国产成人免费在线| 高清不卡一区二区| 成人白浆超碰人人人人| k8久久久一区二区三区 | 国产成人三级在线观看| 精品一区二区国语对白| 久久成人免费网站| 国产一区久久久| 高清久久久久久| a亚洲天堂av| 欧美三级资源在线| 国产精品99久久久久久久女警| 国产精品一区不卡| 不卡av免费在线观看| 色婷婷综合久久久中文字幕| 在线观看成人小视频| 欧美日韩国产bt| 精品动漫一区二区三区在线观看| 久久品道一品道久久精品| 国产日韩成人精品| 亚洲免费毛片网站| 视频一区在线播放| 韩国在线一区二区| 91亚洲永久精品| 91精品国产一区二区三区蜜臀 | 麻豆精品久久久| 亚洲精品乱码久久久久久日本蜜臀| 亚洲三级理论片| 日韩国产精品久久| 日本成人中文字幕| 国产一区二区三区在线观看免费视频| 国产福利一区在线观看| 91久久一区二区| 精品国产91洋老外米糕| 亚洲婷婷在线视频| 日韩精品色哟哟| 99久久夜色精品国产网站| 丁香婷婷综合激情五月色| 91色九色蝌蚪| 欧美大片在线观看| 一区二区三区久久久| 狠狠色综合日日| 欧美优质美女网站| 国产欧美一区视频| 亚洲成人福利片| 99re这里只有精品6| 精品福利在线导航| 午夜精品久久久久久| 豆国产96在线|亚洲| 日韩一级在线观看| 欧美白人最猛性xxxxx69交| 国产精品久久久久婷婷二区次| 日韩不卡在线观看日韩不卡视频| va亚洲va日韩不卡在线观看| 欧美大片在线观看一区二区| 亚洲精品视频在线| 国产成人午夜99999| 日韩欧美一区电影| 亚洲综合色成人| 99精品桃花视频在线观看| 精品久久人人做人人爽| 午夜影院在线观看欧美| 99精品久久久久久| 久久久一区二区三区捆绑**| 日本欧美肥老太交大片| 欧美色视频一区| 亚洲乱码中文字幕| 国产传媒欧美日韩成人| 日韩精品一区二区三区中文精品| 一区二区三区四区亚洲| 成人av网在线| 中文字幕在线观看一区| 香蕉加勒比综合久久| 99re热这里只有精品免费视频| 久久久久久久精| 久久国产精品第一页| 91精品国产综合久久福利| 亚洲第一激情av| 欧美日本在线播放| 亚洲国产成人av| 欧美日韩亚洲综合一区二区三区| 亚洲视频一二区| 99国产精品国产精品久久| 国产精品美女久久久久高潮| 99视频超级精品| 一区二区三区免费| 欧美日韩一二三区|