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


Java AEADBadTagException类代码示例

本文整理汇总了Java中javax.crypto.AEADBadTagException的典型用法代码示例。如果您正苦于以下问题:Java AEADBadTagException类的具体用法?Java AEADBadTagException怎么用?Java AEADBadTagException使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


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

示例1: gcm_oneReadByteCorrupt

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
static void gcm_oneReadByteCorrupt() throws Exception {

        System.out.println("Running gcm_oneReadByteCorrupt test");

        // Encrypt 100 bytes with AES/GCM/PKCS5Padding
        byte[] ct = encryptedText("GCM", 100);
        // Corrupt the encrypted message
        ct = corruptGCM(ct);
        // Create stream for decryption
        CipherInputStream in = getStream("GCM", ct);

        try {
            in.read();
            System.out.println("  Fail. No exception thrown.");
        } catch (IOException e) {
            Throwable ec = e.getCause();
            if (ec instanceof AEADBadTagException) {
                System.out.println("  Pass.");
            } else {
                System.out.println("  Fail: " + ec.getMessage());
                throw new RuntimeException(ec);
            }
        }
    }
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:25,代码来源:CipherInputStreamExceptions.java

示例2: authenticatedEncryptionMacFailureTest

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
@Test
public void authenticatedEncryptionMacFailureTest() throws Exception {
  for (String provider : new String[] {null, "BC", "SunJCE"}) {
    ValueEncryptorBase encryptor = ValueEncryptor.AES_GCM.getInstance(provider);
    byte[] plaintext = "1234567890123457".getBytes(VISIBILITY_CHARSET);
    byte[] key = "aabbccddaabbccddaabbccddaabbccdd".getBytes(VISIBILITY_CHARSET);

    byte[] ciphertext = encryptor.encrypt(key, plaintext);
    if (ciphertext[20] == 0) {
      ciphertext[20] = (byte) 1;
    } else {
      ciphertext[20] = (byte) 0;
    }

    thrown.expect(EncryptionException.class);
    thrown.expectCause(isA(AEADBadTagException.class));
    encryptor.decrypt(key, ciphertext);
  }
}
 
开发者ID:mit-ll,项目名称:PACE,代码行数:20,代码来源:AESValueEncryptorTest.java

示例3: decrypt

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
@SuppressWarnings("InsecureCryptoUsage")
@Override
public byte[] decrypt(final byte[] ciphertext, final byte[] associatedData)
    throws GeneralSecurityException {
  int plaintextLength = ciphertext.length - ivSizeInBytes - TAG_SIZE_IN_BYTES;
  if (plaintextLength < 0) {
    throw new GeneralSecurityException("ciphertext too short");
  }
  Cipher ecb = Cipher.getInstance("AES/ECB/NOPADDING");
  ecb.init(Cipher.ENCRYPT_MODE, keySpec);
  byte[] n = omac(ecb, 0, ciphertext, 0, ivSizeInBytes);
  byte[] h = omac(ecb, 1, associatedData, 0, associatedData.length);
  byte[] t = omac(ecb, 2, ciphertext, ivSizeInBytes, plaintextLength);
  byte res = 0;
  int offset = ciphertext.length - TAG_SIZE_IN_BYTES;
  for (int i = 0; i < TAG_SIZE_IN_BYTES; i++) {
    res = (byte) (res | (ciphertext[offset + i] ^ h[i] ^ n[i] ^ t[i]));
  }
  if (res != 0) {
    throw new AEADBadTagException("tag mismatch");
  }
  Cipher ctr = Cipher.getInstance("AES/CTR/NOPADDING");
  ctr.init(Cipher.ENCRYPT_MODE, keySpec, new IvParameterSpec(n));
  return ctr.doFinal(ciphertext, ivSizeInBytes, plaintextLength);
}
 
开发者ID:google,项目名称:tink,代码行数:26,代码来源:AesEaxJce.java

示例4: decrypt

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
/**
 * Decryptes {@code ciphertext} with the following format: {@code nonce || actual_ciphertext ||
 * tag}
 *
 * @param ciphertext with format {@code nonce || actual_ciphertext || tag}
 * @param additionalData additional data
 * @return plaintext if authentication is successful
 * @throws GeneralSecurityException when ciphertext is shorter than nonce size + tag size
 * @throws AEADBadTagException when the tag is invalid
 */
private byte[] decrypt(ByteBuffer ciphertext, final byte[] additionalData)
    throws GeneralSecurityException {
  if (ciphertext.remaining() < snuffle.nonceSizeInBytes() + MAC_TAG_SIZE_IN_BYTES) {
    throw new GeneralSecurityException("ciphertext too short");
  }
  int firstPosition = ciphertext.position();
  byte[] tag = new byte[MAC_TAG_SIZE_IN_BYTES];
  ciphertext.position(ciphertext.limit() - MAC_TAG_SIZE_IN_BYTES);
  ciphertext.get(tag);
  // rewind to read ciphertext and compute tag.
  ciphertext.position(firstPosition);
  ciphertext.limit(ciphertext.limit() - MAC_TAG_SIZE_IN_BYTES);
  byte[] nonce = new byte[snuffle.nonceSizeInBytes()];
  ciphertext.get(nonce);
  try {
    Poly1305.verifyMac(getMacKey(nonce), macDataRfc7539(additionalData, ciphertext), tag);
  } catch (GeneralSecurityException ex) {
    throw new AEADBadTagException(ex.toString());
  }

  // rewind to decrypt the ciphertext.
  ciphertext.position(firstPosition);
  return snuffle.decrypt(ciphertext);
}
 
开发者ID:google,项目名称:tink,代码行数:35,代码来源:SnufflePoly1305.java

示例5: testModifiedAssociatedData

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
private static void testModifiedAssociatedData(int keySize) throws GeneralSecurityException {
  byte[] key = Random.randBytes(keySize);
  DeterministicAead crypter = new AesSiv(key);
  byte[] plaintext = Random.randBytes(10);
  byte[] aad = Random.randBytes(10);
  byte[] ciphertext = crypter.encryptDeterministically(plaintext, aad);
  // Flipping bits of aad.
  for (int b = 0; b < aad.length; b++) {
    for (int bit = 0; bit < 8; bit++) {
      byte[] modified = Arrays.copyOf(aad, aad.length);
      modified[b] ^= (byte) (1 << bit);
      try {
        byte[] unused = crypter.decryptDeterministically(ciphertext, modified);
        fail("Decrypting modified aad should fail");
      } catch (AEADBadTagException ex) {
        // This is expected.
      }
    }
  }
}
 
开发者ID:google,项目名称:tink,代码行数:21,代码来源:AesSivTest.java

示例6: main

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
public static void main(String[] args) throws Exception {
    newGCMParameterSpecFail(-1, bytes);
    newGCMParameterSpecFail(128, null);
    newGCMParameterSpecPass(128, bytes);

    newGCMParameterSpecFail(-1, bytes, 2, 4);
    newGCMParameterSpecFail(128, null, 2, 4);
    newGCMParameterSpecFail(128, bytes, -2, 4);
    newGCMParameterSpecFail(128, bytes, 2, -4);
    newGCMParameterSpecFail(128, bytes, 2, 15);  // one too many

    newGCMParameterSpecPass(128, bytes, 2, 14);  // ok.
    newGCMParameterSpecPass(96, bytes, 4, 4);
    newGCMParameterSpecPass(96, bytes, 0, 0);

    // Might as well check the Exception constructors.
    try {
        new AEADBadTagException();
        new AEADBadTagException("Bad Tag Seen");
    } catch (Exception e) {
        e.printStackTrace();
        failed++;
    }

    if (failed != 0) {
        throw new Exception("Test(s) failed");
    }
}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:29,代码来源:GCMParameterSpecTest.java

示例7: gcm_AEADBadTag

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
static void gcm_AEADBadTag() throws Exception {
    Cipher c;
    byte[] read = new byte[200];

    System.out.println("Running gcm_AEADBadTag");

    // Encrypt 100 bytes with AES/GCM/PKCS5Padding
    byte[] ct = encryptedText("GCM", 100);
    // Corrupt the encrypted message
    ct = corruptGCM(ct);
    // Create stream for decryption
    CipherInputStream in = getStream("GCM", ct);

    try {
        int size = in.read(read);
        throw new RuntimeException("Fail: CipherInputStream.read() " +
                "returned " + size + " and didn't throw an exception.");
    } catch (IOException e) {
        Throwable ec = e.getCause();
        if (ec instanceof AEADBadTagException) {
            System.out.println("  Pass.");
        } else {
            System.out.println("  Fail: " + ec.getMessage());
            throw new RuntimeException(ec);
        }
    } finally {
        in.close();
    }
}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:30,代码来源:CipherInputStreamExceptions.java

示例8: when

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
@Test
public void mapUuidsToKeys_whenTheActiveKeyIsTheOnlyKey_whenThereIsNoMatchingCanaryInTheDatabase_whenDecryptingWithTheWrongKeyRaisesAnInternalException_itShouldCreateACanaryForTheKey()
    throws Exception {
  when(encryptionKeysConfiguration.getKeys()).thenReturn(asList(activeKeyData));
  EncryptionKeyCanary nonMatchingCanary = new EncryptionKeyCanary();

  nonMatchingCanary.setUuid(UUID.randomUUID());
  nonMatchingCanary.setEncryptedCanaryValue("fake-non-matching-encrypted-value".getBytes());
  nonMatchingCanary.setNonce("fake-non-matching-nonce".getBytes());

  when(encryptionKeyCanaryDataService.findAll())
      .thenReturn(Arrays.asList(nonMatchingCanary));

  when(encryptionService
      .decrypt(activeKey, nonMatchingCanary.getEncryptedCanaryValue(),
          nonMatchingCanary.getNonce()))
      .thenThrow(new AEADBadTagException());
  when(encryptionKeyCanaryDataService.save(any(EncryptionKeyCanary.class)))
      .thenReturn(activeKeyCanary);

  subject = new EncryptionKeyCanaryMapper(encryptionKeyCanaryDataService,
      encryptionKeysConfiguration, encryptionService, timedRetry, true);

  subject.mapUuidsToKeys(keySet);

  assertCanaryValueWasEncryptedAndSavedToDatabase();
}
 
开发者ID:cloudfoundry-incubator,项目名称:credhub,代码行数:28,代码来源:EncryptionKeyCanaryMapperTest.java

示例9: isMatchingCanary_whenDecryptThrowsAEADBadTagException_returnsFalse

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
@Test
public void isMatchingCanary_whenDecryptThrowsAEADBadTagException_returnsFalse() throws Exception {
  subject = new LunaKeyProxy(encryptionKey,
      new InternalEncryptionService(new PasswordKeyProxyFactoryTestImpl()) {
        @Override
        public String decrypt(Key key, byte[] encryptedValue, byte[] nonce)
            throws Exception {
          throw new AEADBadTagException();
        }
      });

  assertThat(subject.matchesCanary(mock(EncryptionKeyCanary.class)), equalTo(false));
}
 
开发者ID:cloudfoundry-incubator,项目名称:credhub,代码行数:14,代码来源:LunaKeyProxyTest.java

示例10: gcm

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
private byte[] gcm(boolean encrypt, byte[] input, byte[] nonce) throws AEADBadTagException {
  try {
    Cipher cipher = Cipher.getInstance(ENCRYPTION_ALGORITHM);
    SecretKey secretKey = new SecretKeySpec(key, KEY_ALGORITHM);

    GCMParameterSpec gcmParameters = new GCMParameterSpec(TAG_BITS, nonce);
    cipher.init(encrypt ? ENCRYPT_MODE : DECRYPT_MODE, secretKey, gcmParameters);
    return cipher.doFinal(input);
  } catch (NoSuchAlgorithmException | NoSuchPaddingException | BadPaddingException | IllegalBlockSizeException | InvalidAlgorithmParameterException | InvalidKeyException e) {
    Throwables.propagateIfInstanceOf(e, AEADBadTagException.class);
    throw Throwables.propagate(e);
  }
}
 
开发者ID:square,项目名称:keywhiz,代码行数:14,代码来源:GCMEncryptor.java

示例11: failsWhenMacIsIncorrect

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
@Test(expected = AEADBadTagException.class)
public void failsWhenMacIsIncorrect() throws Exception {
  byte[] ciphertext = encryptor.encrypt(testMessage);
  int flipIndex = ciphertext.length - 2;
  byte flipped = (byte)((int)ciphertext[flipIndex] ^ 1);
  ciphertext[flipIndex] = flipped;
  encryptor.decrypt(ciphertext);
}
 
开发者ID:square,项目名称:keywhiz,代码行数:9,代码来源:GCMEncryptorTest.java

示例12: decryptDeterministically

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
@Override
public byte[] decryptDeterministically(final byte[] ciphertext, final byte[] associatedData)
    throws GeneralSecurityException {
  if (ciphertext.length < AesUtil.BLOCK_SIZE) {
    throw new GeneralSecurityException("Ciphertext too short.");
  }

  Cipher aesCtr = EngineFactory.CIPHER.getInstance("AES/CTR/NoPadding");

  byte[] expectedIv = Arrays.copyOfRange(ciphertext, 0, AesUtil.BLOCK_SIZE);

  byte[] ivForJavaCrypto = expectedIv.clone();
  ivForJavaCrypto[8] &= (byte) 0x7F; // 63th bit from the right
  ivForJavaCrypto[12] &= (byte) 0x7F; // 31st bit from the right

  aesCtr.init(
      Cipher.DECRYPT_MODE,
      new SecretKeySpec(this.aesCtrKey, "AES"),
      new IvParameterSpec(ivForJavaCrypto));

  byte[] ctrCiphertext = Arrays.copyOfRange(ciphertext, AesUtil.BLOCK_SIZE, ciphertext.length);
  byte[] decryptedPt = aesCtr.doFinal(ctrCiphertext);
  byte[] computedIv = s2v(associatedData, decryptedPt);

  if (Bytes.equal(expectedIv, computedIv)) {
    return decryptedPt;
  } else {
    throw new AEADBadTagException("Integrity check failed.");
  }
}
 
开发者ID:google,项目名称:tink,代码行数:31,代码来源:AesSiv.java

示例13: encrypt

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
public synchronized byte[] encrypt(byte[] plaintext) throws AEADBadTagException {
  byte[] nonce = new byte[NONCE_LENGTH];
  secureRandom.nextBytes(nonce);

  return Bytes.concat(nonce, gcm(ENCRYPT, plaintext, nonce));
}
 
开发者ID:square,项目名称:keywhiz,代码行数:7,代码来源:GCMEncryptor.java

示例14: decrypt

import javax.crypto.AEADBadTagException; //导入依赖的package包/类
public byte[] decrypt(byte[] ciphertext) throws AEADBadTagException {
  return gcm(DECRYPT, ciphertextWithoutNonce(ciphertext), getNonce(ciphertext));
}
 
开发者ID:square,项目名称:keywhiz,代码行数:4,代码来源:GCMEncryptor.java


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