mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
8179098: Crypto AES/ECB encryption/decryption performance regression (introduced in jdk9b73)
Do bounds check per encryption/decryption call instead of per block Reviewed-by: ascarpino, redestad
This commit is contained in:
parent
b8d80042d7
commit
b0af57a018
9 changed files with 137 additions and 73 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -39,7 +39,6 @@ package com.sun.crypto.provider;
|
|||
import java.security.InvalidKeyException;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
import jdk.internal.HotSpotIntrinsicCandidate;
|
||||
|
||||
|
@ -351,8 +350,8 @@ final class AESCrypt extends SymmetricCipher implements AESConstants
|
|||
*/
|
||||
void encryptBlock(byte[] in, int inOffset,
|
||||
byte[] out, int outOffset) {
|
||||
Objects.checkFromIndexSize(inOffset, AES_BLOCK_SIZE, in.length);
|
||||
Objects.checkFromIndexSize(outOffset, AES_BLOCK_SIZE, out.length);
|
||||
// Array bound checks are done in caller code, i.e.
|
||||
// FeedbackCipher.encrypt/decrypt(...) to improve performance.
|
||||
implEncryptBlock(in, inOffset, out, outOffset);
|
||||
}
|
||||
|
||||
|
@ -430,8 +429,8 @@ final class AESCrypt extends SymmetricCipher implements AESConstants
|
|||
*/
|
||||
void decryptBlock(byte[] in, int inOffset,
|
||||
byte[] out, int outOffset) {
|
||||
Objects.checkFromIndexSize(inOffset, AES_BLOCK_SIZE, in.length);
|
||||
Objects.checkFromIndexSize(outOffset, AES_BLOCK_SIZE, out.length);
|
||||
// Array bound checks are done in caller code, i.e.
|
||||
// FeedbackCipher.encrypt/decrypt(...) to improve performance.
|
||||
implDecryptBlock(in, inOffset, out, outOffset);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue