当前位置: 首页>>代码示例>>Java>>正文


Java Decryptor.init方法代码示例

本文整理汇总了Java中org.apache.hadoop.crypto.Decryptor.init方法的典型用法代码示例。如果您正苦于以下问题:Java Decryptor.init方法的具体用法?Java Decryptor.init怎么用?Java Decryptor.init使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.hadoop.crypto.Decryptor的用法示例。


在下文中一共展示了Decryptor.init方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: decryptEncryptedKey

import org.apache.hadoop.crypto.Decryptor; //导入方法依赖的package包/类
@Override
public KeyVersion decryptEncryptedKey(
    EncryptedKeyVersion encryptedKeyVersion) throws IOException,
    GeneralSecurityException {
  // Fetch the encryption key material
  final String encryptionKeyVersionName =
      encryptedKeyVersion.getEncryptionKeyVersionName();
  final KeyVersion encryptionKey =
      keyProvider.getKeyVersion(encryptionKeyVersionName);
  Preconditions.checkNotNull(encryptionKey,
      "KeyVersion name '%s' does not exist", encryptionKeyVersionName);
  Preconditions.checkArgument(
          encryptedKeyVersion.getEncryptedKeyVersion().getVersionName()
                .equals(KeyProviderCryptoExtension.EEK),
            "encryptedKey version name must be '%s', is '%s'",
            KeyProviderCryptoExtension.EEK,
            encryptedKeyVersion.getEncryptedKeyVersion().getVersionName()
        );

  // Encryption key IV is determined from encrypted key's IV
  final byte[] encryptionIV =
      EncryptedKeyVersion.deriveIV(encryptedKeyVersion.getEncryptedKeyIv());

  CryptoCodec cc = CryptoCodec.getInstance(keyProvider.getConf());
  Decryptor decryptor = cc.createDecryptor();
  decryptor.init(encryptionKey.getMaterial(), encryptionIV);
  final KeyVersion encryptedKV =
      encryptedKeyVersion.getEncryptedKeyVersion();
  int keyLen = encryptedKV.getMaterial().length;
  ByteBuffer bbIn = ByteBuffer.allocateDirect(keyLen);
  ByteBuffer bbOut = ByteBuffer.allocateDirect(keyLen);
  bbIn.put(encryptedKV.getMaterial());
  bbIn.flip();
  decryptor.decrypt(bbIn, bbOut);
  bbOut.flip();
  byte[] decryptedKey = new byte[keyLen];
  bbOut.get(decryptedKey);
  return new KeyVersion(encryptionKey.getName(), EK, decryptedKey);
}
 
开发者ID:naver,项目名称:hadoop,代码行数:40,代码来源:KeyProviderCryptoExtension.java

示例2: decryptEncryptedKey

import org.apache.hadoop.crypto.Decryptor; //导入方法依赖的package包/类
@Override
public KeyVersion decryptEncryptedKey(
    EncryptedKeyVersion encryptedKeyVersion) throws IOException,
    GeneralSecurityException {
  // Fetch the encryption key material
  final String encryptionKeyVersionName =
      encryptedKeyVersion.getEncryptionKeyVersionName();

  final KeyVersion encryptionKey = keyProvider instanceof KeyPairProvider ?
      ((KeyPairProvider) keyProvider).getKeyPairVersion(encryptionKeyVersionName).privateToKeyVersion() :
      keyProvider.getKeyVersion(encryptionKeyVersionName);

  Preconditions.checkNotNull(encryptionKey,
      "KeyVersion name '%s' does not exist", encryptionKeyVersionName);
  Preconditions.checkArgument(
          encryptedKeyVersion.getEncryptedKeyVersion().getVersionName()
                .equals(KeyProviderCryptoExtension.EEK),
            "encryptedKey version name must be '%s', is '%s'",
            KeyProviderCryptoExtension.EEK,
            encryptedKeyVersion.getEncryptedKeyVersion().getVersionName()
        );

  // Encryption key IV is determined from encrypted key's IV
  final byte[] encryptionIV =
      EncryptedKeyVersion.deriveIV(encryptedKeyVersion.getEncryptedKeyIv());

  Metadata metadata = keyProvider.getMetadata(encryptedKeyVersion.getEncryptionKeyName());

  CryptoCodec cc = CryptoCodec.getInstance(keyProvider.getConf());
  Decryptor decryptor = cc.createDecryptor();
  decryptor.init(encryptionKey.getMaterial(), encryptionIV);
  final KeyVersion encryptedKV =
      encryptedKeyVersion.getEncryptedKeyVersion();

  int encryptedKeyLen = encryptedKV.getMaterial().length;
  int keyLen = metadata.getBitLength() / 8;

  /*
    System.err.println("cc" + cc.getClass().toString() +
      " encryption key " + encryptionKey.getMaterial().length +
      " key material len " + encryptedKeyLen +
    " key meta len " + keyLen + " ecnryption iv " + encryptionIV.length);
    */

  ByteBuffer bbIn = ByteBuffer.allocateDirect(encryptedKeyLen);
  ByteBuffer bbOut = ByteBuffer.allocateDirect(encryptedKeyLen);

  // System.err.println("encrypted len " + encryptedKeyLen + " key len " + keyLen);
  bbIn.put(encryptedKV.getMaterial());
  bbIn.flip();
  decryptor.decrypt(bbIn, bbOut);
  byte[] decryptedKey = new byte[keyLen];
  bbOut.get(decryptedKey);
  return new KeyVersion(encryptionKey.getName(), EK, decryptedKey);
}
 
开发者ID:nucypher,项目名称:hadoop-oss,代码行数:56,代码来源:KeyProviderCryptoExtension.java


注:本文中的org.apache.hadoop.crypto.Decryptor.init方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。