當前位置: 首頁>>代碼示例>>Java>>正文


Java KeyParameter類代碼示例

本文整理匯總了Java中org.spongycastle.crypto.params.KeyParameter的典型用法代碼示例。如果您正苦於以下問題:Java KeyParameter類的具體用法?Java KeyParameter怎麽用?Java KeyParameter使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


KeyParameter類屬於org.spongycastle.crypto.params包,在下文中一共展示了KeyParameter類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: decrypt

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
/**
 * Decrypt bytes previously encrypted with this class.
 *
 * @param dataToDecrypt    The data to decrypt
 * @param key              The AES key to use for decryption
 * @return                 The decrypted bytes
 * @throws                 KeyCrypterException if bytes could not be decrypted
 */
@Override
public byte[] decrypt(EncryptedData dataToDecrypt, KeyParameter key) {
    checkNotNull(dataToDecrypt);
    checkNotNull(key);

    try {
        ParametersWithIV keyWithIv = new ParametersWithIV(new KeyParameter(key.getKey()), dataToDecrypt.initialisationVector);

        // Decrypt the message.
        BufferedBlockCipher cipher = new PaddedBufferedBlockCipher(new CBCBlockCipher(new AESFastEngine()));
        cipher.init(false, keyWithIv);

        byte[] cipherBytes = dataToDecrypt.encryptedBytes;
        byte[] decryptedBytes = new byte[cipher.getOutputSize(cipherBytes.length)];
        final int length1 = cipher.processBytes(cipherBytes, 0, cipherBytes.length, decryptedBytes, 0);
        final int length2 = cipher.doFinal(decryptedBytes, length1);

        return Arrays.copyOf(decryptedBytes, length1 + length2);
    } catch (Exception e) {
        throw new KeyCrypterException("Could not decrypt bytes", e);
    }
}
 
開發者ID:rsksmart,項目名稱:rskj,代碼行數:31,代碼來源:KeyCrypterAes.java

示例2: encryptAES

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
private byte[] encryptAES(byte[] privateKeyBytes, byte[] passphrase) {
    KeyCrypterAes keyCrypter = new KeyCrypterAes();
    KeyParameter keyParameter = new KeyParameter(Sha256Hash.hash(passphrase));
    EncryptedData enc = keyCrypter.encrypt(privateKeyBytes, keyParameter);

    try {
        ByteArrayOutputStream encryptedResult = new ByteArrayOutputStream();
        ObjectOutputStream byteStream = new ObjectOutputStream(encryptedResult);

        ArrayList<byte[]> bytes = new ArrayList<>();
        bytes.add(enc.encryptedBytes);
        bytes.add(enc.initialisationVector);
        byteStream.writeObject(bytes);

        return encryptedResult.toByteArray();
    } catch (IOException e) {
        //How is this even possible ???
        throw new IllegalStateException(e);
    }
}
 
開發者ID:rsksmart,項目名稱:rskj,代碼行數:21,代碼來源:Wallet.java

示例3: rotate

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
private static void rotate() throws BlockStoreException {
    setup();
    peers.start();
    // Set a key rotation time and possibly broadcast the resulting maintenance transactions.
    long rotationTimeSecs = Utils.currentTimeSeconds();
    if (options.has(dateFlag)) {
        rotationTimeSecs = options.valueOf(dateFlag).getTime() / 1000;
    } else if (options.has(unixtimeFlag)) {
        rotationTimeSecs = options.valueOf(unixtimeFlag);
    }
    log.info("Setting wallet key rotation time to {}", rotationTimeSecs);
    wallet.setKeyRotationTime(rotationTimeSecs);
    KeyParameter aesKey = null;
    if (wallet.isEncrypted()) {
        aesKey = passwordToKey(true);
        if (aesKey == null)
            return;
    }
    Futures.getUnchecked(wallet.doMaintenance(aesKey, true));
}
 
開發者ID:creativechain,項目名稱:creacoinj,代碼行數:21,代碼來源:WalletTool.java

示例4: addKey

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
private static void addKey() {
    // If we're being given precise details, we have to import the key.
    if (options.has("privkey") || options.has("pubkey")) {
        importKey();
    } else {
        if (options.has(lookaheadSize)) {
            Integer size = options.valueOf(lookaheadSize);
            log.info("Setting keychain lookahead size to {}", size);
            wallet.setKeyChainGroupLookaheadSize(size);
        }
        ECKey key;
        try {
            key = wallet.freshReceiveKey();
        } catch (DeterministicUpgradeRequiredException e) {
            try {
                KeyParameter aesKey = passwordToKey(false);
                wallet.upgradeToDeterministic(aesKey);
            } catch (DeterministicUpgradeRequiresPassword e2) {
                System.err.println("This wallet must be upgraded to be deterministic, but it's encrypted: please supply the password and try again.");
                return;
            }
            key = wallet.freshReceiveKey();
        }
        System.out.println(key.toAddress(params) + " " + key);
    }
}
 
開發者ID:creativechain,項目名稱:creacoinj,代碼行數:27,代碼來源:WalletTool.java

示例5: decrypt

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
/**
 * Create a decrypted private key with the keyCrypter and AES key supplied.
 * Note that if the aesKey is wrong, this has some chance of throwing
 * KeyCrypterException due to the corrupted padding that will result, but it
 * can also just yield a garbage key.
 *
 * @param keyCrypter
 *            The keyCrypter that specifies exactly how the decrypted bytes
 *            are created.
 * @param aesKey
 *            The KeyParameter with the AES encryption key (usually
 *            constructed with keyCrypter#deriveKey and cached).
 */
public ECKey decrypt(KeyCrypter keyCrypter, KeyParameter aesKey) throws KeyCrypterException {
    checkNotNull(keyCrypter);
    // Check that the keyCrypter matches the one used to encrypt the keys,
    // if set.
    if (this.keyCrypter != null && !this.keyCrypter.equals(keyCrypter))
        throw new KeyCrypterException(
                "The keyCrypter being used to decrypt the key is different to the one that was used to encrypt it");
    checkState(encryptedPrivateKey != null, "This key is not encrypted");
    byte[] unencryptedPrivateKey = keyCrypter.decrypt(encryptedPrivateKey, aesKey);
    ECKey key = ECKey.fromPrivate(unencryptedPrivateKey);
    if (!isCompressed())
        key = key.decompress();
    if (!Arrays.equals(key.getPubKey(), getPubKey()))
        throw new KeyCrypterException("Provided AES key is wrong");
    key.setCreationTimeSeconds(creationTimeSeconds);
    return key;
}
 
開發者ID:marvin-we,項目名稱:crypto-core,代碼行數:31,代碼來源:ECKey.java

示例6: initCiphers

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
private void initCiphers(final byte[] key, final byte[] iv) {

		// get the keyBytes
		this.keyBytes = new byte[key.length];
		System.arraycopy(key, 0, this.keyBytes, 0, key.length);

		this.keyP = new KeyParameter(this.keyBytes);

		// get the IV
		this.IV = new byte[blockSize];
		System.arraycopy(iv, 0, this.IV, 0, this.IV.length);

		// create the ciphers
		// AES block cipher in CBC mode with ISO7816d4 padding
		this.encryptCipher = new PaddedBufferedBlockCipher(new CBCBlockCipher(
				new AESFastEngine()), new ISO7816d4Padding());

		this.decryptCipher = new PaddedBufferedBlockCipher(new CBCBlockCipher(
				new AESFastEngine()), new ISO7816d4Padding());

		// create the IV parameter
		final ParametersWithIV parameterIV = new ParametersWithIV(this.keyP, this.IV);

		this.encryptCipher.init(true, parameterIV);
		this.decryptCipher.init(false, parameterIV);
	}
 
開發者ID:MiFirma,項目名稱:mi-firma-android,代碼行數:27,代碼來源:AmAESCrypto.java

示例7: toDecrypted

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
@Override
public BasicKeyChain toDecrypted(KeyParameter aesKey) {
    lock.lock();
    try {
        checkState(keyCrypter != null, "Wallet is already decrypted");
        // Do an up-front check.
        if (numKeys() > 0 && !checkAESKey(aesKey))
            throw new KeyCrypterException("Password/key was incorrect.");
        BasicKeyChain decrypted = new BasicKeyChain();
        for (ECKey key : hashToKeys.values()) {
            decrypted.importKeyLocked(key.decrypt(aesKey));
        }
        return decrypted;
    } finally {
        lock.unlock();
    }
}
 
開發者ID:guodroid,項目名稱:okwallet,代碼行數:18,代碼來源:BasicKeyChain.java

示例8: shouldSendTimeWindowInClientVersion

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
@Test
public void shouldSendTimeWindowInClientVersion() throws Exception {
    final long timeWindow = 4000;
    KeyParameter userKey = null;
    PaymentChannelClient dut =
            new PaymentChannelClient(wallet, ecKey, maxValue, serverHash, userKey, new PaymentChannelClient.DefaultClientChannelProperties() {
                @Override
                public long timeWindow() {
                    return timeWindow;
                }

                @Override
                public PaymentChannelClient.VersionSelector versionSelector() {
                    return clientChannelProperties.versionSelector();
                }
            }, connection);
    connection.sendToServer(capture(clientVersionCapture));
    EasyMock.expect(wallet.getExtensions()).andReturn(new HashMap<String, WalletExtension>());
    replay(connection, wallet);
    dut.connectionOpen();
    assertClientVersion(4000);
}
 
開發者ID:creativechain,項目名稱:creacoinj,代碼行數:23,代碼來源:PaymentChannelClientTest.java

示例9: toEncrypted

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
/**
 * Encrypt the wallet using the KeyCrypter and the AES key. A good default KeyCrypter to use is
 * {@link org.bitcoinj.crypto.KeyCrypterScrypt}.
 *
 * @param keyCrypter The KeyCrypter that specifies how to encrypt/ decrypt a key
 * @param aesKey AES key to use (normally created using KeyCrypter#deriveKey and cached as it is time consuming
 *               to create from a password)
 * @throws KeyCrypterException Thrown if the wallet encryption fails. If so, the wallet state is unchanged.
 */
@Override
public BasicKeyChain toEncrypted(KeyCrypter keyCrypter, KeyParameter aesKey) {
    lock.lock();
    try {
        checkNotNull(keyCrypter);
        checkState(this.keyCrypter == null, "Key chain is already encrypted");
        BasicKeyChain encrypted = new BasicKeyChain(keyCrypter);
        for (ECKey key : hashToKeys.values()) {
            ECKey encryptedKey = key.encrypt(keyCrypter, aesKey);
            // Check that the encrypted key can be successfully decrypted.
            // This is done as it is a critical failure if the private key cannot be decrypted successfully
            // (all bitcoin controlled by that private key is lost forever).
            // For a correctly constructed keyCrypter the encryption should always be reversible so it is just
            // being as cautious as possible.
            if (!ECKey.encryptionIsReversible(key, encryptedKey, keyCrypter, aesKey))
                throw new KeyCrypterException("The key " + key.toString() + " cannot be successfully decrypted after encryption so aborting wallet encryption.");
            encrypted.importKeyLocked(encryptedKey);
        }
        return encrypted;
    } finally {
        lock.unlock();
    }
}
 
開發者ID:guodroid,項目名稱:okwallet,代碼行數:33,代碼來源:BasicKeyChain.java

示例10: spendUnconfirmedChange

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
private Wallet spendUnconfirmedChange(Wallet wallet, Transaction t2, KeyParameter aesKey) throws Exception {
    if (wallet.getTransactionSigners().size() == 1)   // don't bother reconfiguring the p2sh wallet
        wallet = roundTrip(wallet);
    Coin v3 = valueOf(0, 50);
    assertEquals(v3, wallet.getBalance());
    SendRequest req = SendRequest.to(OTHER_ADDRESS, valueOf(0, 48));
    req.aesKey = aesKey;
    req.shuffleOutputs = false;
    wallet.completeTx(req);
    Transaction t3 = req.tx;
    assertNotEquals(t2.getOutput(1).getScriptPubKey().getToAddress(PARAMS),
                    t3.getOutput(1).getScriptPubKey().getToAddress(PARAMS));
    assertNotNull(t3);
    wallet.commitTx(t3);
    assertTrue(wallet.isConsistent());
    // t2 and t3 gets confirmed in the same block.
    sendMoneyToWallet(AbstractBlockChain.NewBlockType.BEST_CHAIN, t2, t3);
    assertTrue(wallet.isConsistent());
    return wallet;
}
 
開發者ID:creativechain,項目名稱:creacoinj,代碼行數:21,代碼來源:WalletTest.java

示例11: encryptionDecryptionBadPassword

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
@Test
public void encryptionDecryptionBadPassword() throws Exception {
    Wallet encryptedWallet = new Wallet(PARAMS);
    encryptedWallet.encrypt(PASSWORD1);
    KeyCrypter keyCrypter = encryptedWallet.getKeyCrypter();
    KeyParameter wrongAesKey = keyCrypter.deriveKey(WRONG_PASSWORD);

    // Check the wallet is currently encrypted
    assertEquals("Wallet is not an encrypted wallet", EncryptionType.ENCRYPTED_SCRYPT_AES, encryptedWallet.getEncryptionType());
    assertFalse(encryptedWallet.checkAESKey(wrongAesKey));

    // Check that the wrong password does not decrypt the wallet.
    try {
        encryptedWallet.decrypt(wrongAesKey);
        fail("Incorrectly decoded wallet with wrong password");
    } catch (KeyCrypterException ede) {
        // Expected.
    }
}
 
開發者ID:creativechain,項目名稱:creacoinj,代碼行數:20,代碼來源:WalletTest.java

示例12: encryptionIsReversible

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
/**
 * <p>
 * Check that it is possible to decrypt the key with the keyCrypter and that
 * the original key is returned.
 * </p>
 *
 * <p>
 * Because it is a critical failure if the private keys cannot be decrypted
 * successfully (resulting of loss of all bitcoins controlled by the private
 * key) you can use this method to check when you *encrypt* a wallet that it
 * can definitely be decrypted successfully.
 * </p>
 *
 * @return true if the encrypted key can be decrypted back to the original
 *         key successfully.
 */
public static boolean encryptionIsReversible(ECKey originalKey, ECKey encryptedKey, KeyCrypter keyCrypter,
        KeyParameter aesKey) {
    try {
        ECKey rebornUnencryptedKey = encryptedKey.decrypt(keyCrypter, aesKey);
        byte[] originalPrivateKeyBytes = originalKey.getPrivKeyBytes();
        byte[] rebornKeyBytes = rebornUnencryptedKey.getPrivKeyBytes();
        if (!Arrays.equals(originalPrivateKeyBytes, rebornKeyBytes)) {
            log.error("The check that encryption could be reversed failed for {}", originalKey);
            return false;
        }
        return true;
    } catch (KeyCrypterException kce) {
        log.error(kce.getMessage());
        return false;
    }
}
 
開發者ID:marvin-we,項目名稱:crypto-core,代碼行數:33,代碼來源:ECKey.java

示例13: toString

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
public String toString(boolean includePrivateKeys, @Nullable KeyParameter aesKey, NetworkParameters params) {
    final DeterministicKey watchingKey = getWatchingKey();
    final StringBuilder builder = new StringBuilder();
    if (seed != null) {
        if (includePrivateKeys) {
            DeterministicSeed decryptedSeed = seed.isEncrypted()
                    ? seed.decrypt(getKeyCrypter(), DEFAULT_PASSPHRASE_FOR_MNEMONIC, aesKey) : seed;
            final List<String> words = decryptedSeed.getMnemonicCode();
            builder.append("Seed as words: ").append(Utils.SPACE_JOINER.join(words)).append('\n');
            builder.append("Seed as hex:   ").append(decryptedSeed.toHexString()).append('\n');
        } else {
            if (seed.isEncrypted())
                builder.append("Seed is encrypted\n");
        }
        builder.append("Seed birthday: ").append(seed.getCreationTimeSeconds()).append("  [")
                .append(Utils.dateTimeFormat(seed.getCreationTimeSeconds() * 1000)).append("]\n");
    } else {
        builder.append("Key birthday:  ").append(watchingKey.getCreationTimeSeconds()).append("  [")
                .append(Utils.dateTimeFormat(watchingKey.getCreationTimeSeconds() * 1000)).append("]\n");
    }
    builder.append("Key to watch:  ").append(watchingKey.serializePubB58(params)).append('\n');
    formatAddresses(includePrivateKeys, aesKey, params, builder);
    return builder.toString();
}
 
開發者ID:guodroid,項目名稱:okwallet,代碼行數:25,代碼來源:DeterministicKeyChain.java

示例14: handleGo

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
private void handleGo() {
    state = State.DECRYPTING;
    updateView();

    if (wallet.isEncrypted()) {
        new DeriveKeyTask(backgroundHandler, application.scryptIterationsTarget()) {
            @Override
            protected void onSuccess(final KeyParameter encryptionKey, final boolean wasChanged) {
                if (wasChanged)
                    application.backupWallet();
                doRaiseFee(encryptionKey);
            }
        }.deriveKey(wallet, passwordView.getText().toString().trim());

        updateView();
    } else {
        doRaiseFee(null);
    }
}
 
開發者ID:guodroid,項目名稱:okwallet,代碼行數:20,代碼來源:RaiseFeeDialogFragment.java

示例15: FrameCodec

import org.spongycastle.crypto.params.KeyParameter; //導入依賴的package包/類
public FrameCodec(EncryptionHandshake.Secrets secrets) {
    this.mac = secrets.mac;
    int blockSize = secrets.aes.length * 8;
    enc = new SICBlockCipher(new AESFastEngine());
    enc.init(true, new ParametersWithIV(new KeyParameter(secrets.aes), new byte[blockSize / 8]));
    dec = new SICBlockCipher(new AESFastEngine());
    dec.init(false, new ParametersWithIV(new KeyParameter(secrets.aes), new byte[blockSize / 8]));
    egressMac = secrets.egressMac;
    ingressMac = secrets.ingressMac;
}
 
開發者ID:talentchain,項目名稱:talchain,代碼行數:11,代碼來源:FrameCodec.java


注:本文中的org.spongycastle.crypto.params.KeyParameter類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。