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

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

?? securefilestore.java

?? 非常棒的java數據庫
?? JAVA
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (http://h2database.com/html/license.html).
 * Initial Developer: H2 Group
 */
package org.h2.security;

import java.sql.SQLException;

import org.h2.constant.ErrorCode;
import org.h2.engine.Constants;
import org.h2.message.Message;
import org.h2.store.DataHandler;
import org.h2.store.FileStore;
import org.h2.util.RandomUtils;

/**
 * A file store that encrypts all data before writing,
 * and decrypts all data after reading.
 */
public class SecureFileStore extends FileStore {

    private byte[] key;
    private BlockCipher cipher;
    private BlockCipher cipherForInitVector;
    private byte[] buffer = new byte[4];
    private long pos;
    private byte[] bufferForInitVector;
    private int keyIterations;

    public SecureFileStore(DataHandler handler, String name, String mode, byte[] magic, String cipher, byte[] key, int keyIterations) throws SQLException {
        super(handler, name, mode, magic);
        this.key = key;
        if ("XTEA".equalsIgnoreCase(cipher)) {
            this.cipher = new XTEA();
            this.cipherForInitVector = new XTEA();
        } else if ("AES".equalsIgnoreCase(cipher)) {
            this.cipher = new AES();
            this.cipherForInitVector = new AES();
        } else {
            throw Message.getSQLException(ErrorCode.UNSUPPORTED_CIPHER, cipher);
        }
        this.keyIterations = keyIterations;
        bufferForInitVector = new byte[Constants.FILE_BLOCK_SIZE];
    }

    protected byte[] generateSalt() {
        return RandomUtils.getSecureBytes(Constants.FILE_BLOCK_SIZE);
    }

    protected void initKey(byte[] salt) {
        SHA256 sha = new SHA256();
        key = sha.getHashWithSalt(key, salt);
        for (int i = 0; i < keyIterations; i++) {
            key = sha.getHash(key);
        }
        cipher.setKey(key);
        key = sha.getHash(key);
        cipherForInitVector.setKey(key);
    }

    protected void writeDirect(byte[] b, int off, int len) throws SQLException {
        super.write(b, off, len);
        pos += len;
    }

    public void write(byte[] b, int off, int len) throws SQLException {
        if (buffer.length < b.length) {
            buffer = new byte[len];
        }
        System.arraycopy(b, off, buffer, 0, len);
        xorInitVector(buffer, 0, len, pos);
        cipher.encrypt(buffer, 0, len);
        super.write(buffer, 0, len);
        pos += len;
    }

    protected void readFullyDirect(byte[] b, int off, int len) throws SQLException {
        super.readFully(b, off, len);
        pos += len;
    }

    public void readFully(byte[] b, int off, int len) throws SQLException {
        super.readFully(b, off, len);
        cipher.decrypt(b, off, len);
        xorInitVector(b, off, len, pos);
        pos += len;
    }

    public void seek(long x) throws SQLException {
        this.pos = x;
        super.seek(x);
    }

    public void setLength(long newLength) throws SQLException {
        long oldPos = pos;
        long length = length();
        if (newLength > length) {
            seek(length);
            byte[] empty = EMPTY;
            while (true) {
                int p = (int) Math.min(newLength - length, EMPTY.length);
                if (p <= 0) {
                    break;
                }
                write(empty, 0, p);
                length += p;
            }
            seek(oldPos);
        } else {
            super.setLength(newLength);
        }
    }

    private void xorInitVector(byte[] b, int off, int len, long pos) {
        byte[] iv = bufferForInitVector;
        while (len > 0) {
            for (int i = 0; i < Constants.FILE_BLOCK_SIZE; i += 8) {
                long block = ((pos + i) >>> 3);
                iv[i] = (byte) (block >> 56);
                iv[i + 1] = (byte) (block >> 48);
                iv[i + 2] = (byte) (block >> 40);
                iv[i + 3] = (byte) (block >> 32);
                iv[i + 4] = (byte) (block >> 24);
                iv[i + 5] = (byte) (block >> 16);
                iv[i + 6] = (byte) (block >> 8);
                iv[i + 7] = (byte) block;
            }
            cipherForInitVector.encrypt(iv, 0, Constants.FILE_BLOCK_SIZE);
            for (int i = 0; i < Constants.FILE_BLOCK_SIZE; i++) {
                b[off + i] ^= iv[i];
            }
            pos += Constants.FILE_BLOCK_SIZE;
            off += Constants.FILE_BLOCK_SIZE;
            len -= Constants.FILE_BLOCK_SIZE;
        }
    }

    public boolean isEncrypted() {
        return true;
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
怡红院av一区二区三区| 亚洲蜜臀av乱码久久精品| 欧美主播一区二区三区| 成人国产视频在线观看| 国产成人一区二区精品非洲| 久久超级碰视频| 狠狠v欧美v日韩v亚洲ⅴ| 久久精品国内一区二区三区| 久久国产欧美日韩精品| 国产一区二区精品久久99| 国产河南妇女毛片精品久久久| 国产原创一区二区| 丁香婷婷深情五月亚洲| 成人av电影在线观看| 91麻豆成人久久精品二区三区| 欧美亚洲综合网| 亚洲天天做日日做天天谢日日欢| 亚洲天堂成人在线观看| 亚洲电影在线免费观看| 久久精品999| 成人免费毛片app| 91精品福利在线| 日韩视频免费观看高清完整版| 2020国产精品自拍| 最新不卡av在线| 天堂资源在线中文精品| 麻豆成人91精品二区三区| 成人性生交大片免费看中文网站| 日本道精品一区二区三区 | 2023国产精品视频| 国产欧美日韩视频一区二区| 亚洲美女在线一区| 狠狠狠色丁香婷婷综合久久五月| 96av麻豆蜜桃一区二区| 欧美一区二区三区四区高清| 国产精品麻豆久久久| 日韩精品成人一区二区三区| 国产91精品免费| 欧美理论片在线| 成人欧美一区二区三区黑人麻豆 | 国产综合成人久久大片91| 成人亚洲一区二区一| 欧美一区二区三区四区五区 | 视频一区欧美日韩| 成人一道本在线| 欧美一区二区三区公司| 亚洲人成网站在线| 国产成人午夜99999| 欧美男男青年gay1069videost| 欧美激情资源网| 伦理电影国产精品| 欧美伦理影视网| 亚洲精品中文在线观看| 国产999精品久久久久久绿帽| 在线不卡免费av| 亚洲一区二区视频| 99视频热这里只有精品免费| 国产亚洲精品bt天堂精选| 喷水一区二区三区| 8x8x8国产精品| 亚洲一区av在线| 色综合久久88色综合天天免费| 久久综合狠狠综合| 久久精品国产精品青草| 日韩一区二区在线看| 日韩激情视频在线观看| 欧美日韩不卡一区| 丝袜亚洲另类欧美| 8x8x8国产精品| 婷婷成人激情在线网| 欧美日韩国产经典色站一区二区三区 | 国产盗摄视频一区二区三区| 91精品婷婷国产综合久久竹菊| 亚洲成人激情自拍| 欧美精品乱人伦久久久久久| 亚洲午夜日本在线观看| 欧美丝袜第三区| 偷拍一区二区三区| 欧美一区二区三区免费大片| 蜜臀99久久精品久久久久久软件| 欧美丰满少妇xxxbbb| 美国av一区二区| 久久网这里都是精品| 精品国产伦一区二区三区观看方式| 亚洲精品国产第一综合99久久| 91丨porny丨国产入口| 亚洲欧美日韩国产手机在线| 一本久久精品一区二区| 亚洲成av人片| 欧美变态口味重另类| 国精产品一区一区三区mba桃花| 久久婷婷国产综合国色天香| 国产ts人妖一区二区| 亚洲欧美色综合| 欧美一卡二卡三卡四卡| 狠狠色狠狠色综合系列| 中文字幕成人av| 欧美日韩一区二区电影| 精品亚洲免费视频| 国产精品狼人久久影院观看方式| 色婷婷香蕉在线一区二区| 亚洲一区二区在线观看视频| 日韩三级.com| 99国产一区二区三精品乱码| 天天免费综合色| 欧美国产丝袜视频| 欧美三级视频在线| 国产精品一线二线三线精华| 国产成人精品免费在线| 亚洲免费电影在线| 日韩亚洲欧美综合| 91在线观看美女| 久久99精品久久久久久动态图| 1区2区3区国产精品| 日韩一级片网址| 91福利视频久久久久| 国产精品综合av一区二区国产馆| 亚洲欧美一区二区不卡| 精品国产一区二区国模嫣然| 在线欧美小视频| 床上的激情91.| 蜜臀99久久精品久久久久久软件| 18欧美亚洲精品| 国产日韩精品一区二区三区在线| 在线成人小视频| 日本高清成人免费播放| 国产v日产∨综合v精品视频| 美女视频黄 久久| 亚洲一区二区三区精品在线| 中文字幕成人网| 久久亚洲欧美国产精品乐播| 在线电影一区二区三区| 欧洲亚洲精品在线| 91麻豆国产自产在线观看| 国产成人av电影免费在线观看| 日本不卡一二三区黄网| 夜夜精品视频一区二区| 中文字幕一区二区三区乱码在线| 26uuu久久综合| 欧美不卡激情三级在线观看| 91精品欧美久久久久久动漫| 日本韩国欧美在线| 一本一道久久a久久精品综合蜜臀| 国产成人免费视频| 国产v日产∨综合v精品视频| 欧美一区二区三区影视| 欧美精品乱码久久久久久| 精品视频在线免费| 欧美色视频在线观看| 欧美视频一区二| 欧美日韩国产高清一区二区| 欧美在线一二三| 欧美日韩国产精选| 欧美一级精品大片| 日韩欧美一区二区三区在线| 欧美一级黄色录像| 2023国产精品| 国产欧美日韩三级| 中文字幕在线观看一区| 亚洲乱码中文字幕| 亚洲国产你懂的| 蜜臀久久99精品久久久久宅男| 免费在线一区观看| 国产一区二区在线观看免费| 国产电影精品久久禁18| 成人美女在线视频| 色噜噜偷拍精品综合在线| 欧美日本在线观看| 精品粉嫩超白一线天av| 国产日本欧洲亚洲| 一区二区三区国产精华| 偷偷要91色婷婷| 国产一区二区三区电影在线观看 | 国产欧美日韩中文久久| 中文乱码免费一区二区| 玉足女爽爽91| 免费久久99精品国产| 成人性生交大片免费| 欧美色精品天天在线观看视频| 欧美成人一区二区| 国产精品麻豆久久久| 亚洲一区二区三区免费视频| 免费成人美女在线观看| 福利一区在线观看| 欧美揉bbbbb揉bbbbb| 亚洲精品一区二区精华| 最新久久zyz资源站| 日韩**一区毛片| 99久精品国产| 欧美一级欧美一级在线播放| 国产精品久久久久毛片软件| 亚洲123区在线观看| 国产91精品一区二区| 一区二区三区高清| 高清国产一区二区| 日韩欧美高清在线| 一区二区三区中文字幕精品精品 | 欧美网站大全在线观看| 久久精品一区四区| 午夜久久久影院|