|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.poi.poifs.crypt.CryptoFunctions
public class CryptoFunctions
Helper functions used for standard and agile encryption
| Constructor Summary | |
|---|---|
CryptoFunctions()
|
|
| Method Summary | |
|---|---|
static byte[] |
createXorArray1(java.lang.String password)
Creates an byte array for xor obfuscation (method 1) |
static int |
createXorKey1(java.lang.String password)
Create the xor key for xor obfuscation, which is used to create the xor array (method 1) |
static int |
createXorVerifier1(java.lang.String password)
Create the verifier for xor obfuscation (method 1) |
static int |
createXorVerifier2(java.lang.String password)
This method generates the xor verifier for word documents < 2007 (method 2). |
static byte[] |
generateIv(HashAlgorithm hashAlgorithm,
byte[] salt,
byte[] blockKey,
int blockSize)
2.3.4.12 Initialization Vector Generation (Agile Encryption) Initialization vectors are used in all cases for agile encryption. |
static byte[] |
generateKey(byte[] passwordHash,
HashAlgorithm hashAlgorithm,
byte[] blockKey,
int keySize)
2.3.4.11 Encryption Key Generation (Agile Encryption) ... |
static byte[] |
getBlock0(byte[] hash,
int size)
Returns a new byte array with a truncated to the given size. |
static byte[] |
getBlock36(byte[] hash,
int size)
Returns a new byte array with a truncated to the given size. |
static javax.crypto.Cipher |
getCipher(java.security.Key key,
CipherAlgorithm cipherAlgorithm,
ChainingMode chain,
byte[] vec,
int cipherMode,
java.lang.String padding)
Initialize a new cipher object with the given cipher properties If the given algorithm is not implemented in the JCE, it will try to load it from the bouncy castle provider. |
static javax.crypto.Cipher |
getCipher(javax.crypto.SecretKey key,
CipherAlgorithm cipherAlgorithm,
ChainingMode chain,
byte[] vec,
int cipherMode)
|
static javax.crypto.Mac |
getMac(HashAlgorithm hashAlgorithm)
|
static java.security.MessageDigest |
getMessageDigest(HashAlgorithm hashAlgorithm)
|
static byte[] |
hashPassword(java.lang.String password,
HashAlgorithm hashAlgorithm,
byte[] salt,
int spinCount)
2.3.4.7 ECMA-376 Document Encryption Key Generation (Standard Encryption) 2.3.4.11 Encryption Key Generation (Agile Encryption) The encryption key for ECMA-376 document encryption [ECMA-376] using agile encryption MUST be generated by using the following method, which is derived from PKCS #5: Password-Based Cryptography Version 2.0 [RFC2898]. |
static byte[] |
hashPassword(java.lang.String password,
HashAlgorithm hashAlgorithm,
byte[] salt,
int spinCount,
boolean iteratorFirst)
Generalized method for read and write protection hash generation. |
static void |
registerBouncyCastle()
|
static java.lang.String |
xorHashPassword(java.lang.String password)
This method generates the xored-hashed password for word documents < 2007. |
static java.lang.String |
xorHashPasswordReversed(java.lang.String password)
Convenience function which returns the reversed xored-hashed password for further processing in word documents 2007 and newer, which utilize a real hashing algorithm like sha1. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public CryptoFunctions()
| Method Detail |
|---|
public static byte[] hashPassword(java.lang.String password,
HashAlgorithm hashAlgorithm,
byte[] salt,
int spinCount)
generateKey(byte[],HashAlgorithm,byte[],int)
password - hashAlgorithm - salt - spinCount -
public static byte[] hashPassword(java.lang.String password,
HashAlgorithm hashAlgorithm,
byte[] salt,
int spinCount,
boolean iteratorFirst)
password - hashAlgorithm - salt - spinCount - iteratorFirst - if true, the iterator is hashed before the n-1 hash value,
if false the n-1 hash value is applied first
public static byte[] generateIv(HashAlgorithm hashAlgorithm,
byte[] salt,
byte[] blockKey,
int blockSize)
public static byte[] generateKey(byte[] passwordHash,
HashAlgorithm hashAlgorithm,
byte[] blockKey,
int keySize)
passwordHash - hashAlgorithm - blockKey - keySize -
public static javax.crypto.Cipher getCipher(javax.crypto.SecretKey key,
CipherAlgorithm cipherAlgorithm,
ChainingMode chain,
byte[] vec,
int cipherMode)
public static javax.crypto.Cipher getCipher(java.security.Key key,
CipherAlgorithm cipherAlgorithm,
ChainingMode chain,
byte[] vec,
int cipherMode,
java.lang.String padding)
key - the secrect keycipherAlgorithm - the cipher algorithmchain - the chaining modevec - the initialization vector (IV), can be nullcipherMode - Cipher.DECRYPT_MODE or Cipher.ENCRYPT_MODEpadding -
java.security.GeneralSecurityException
EncryptedDocumentException - if the initialization failed or if an algorithm was specified,
which depends on a missing bouncy castle provider
public static byte[] getBlock36(byte[] hash,
int size)
hash - the to be truncated/filled hash byte arraysize - the size of the returned byte array
public static byte[] getBlock0(byte[] hash,
int size)
hash - the to be truncated/filled hash byte arraysize - the size of the returned byte array
public static java.security.MessageDigest getMessageDigest(HashAlgorithm hashAlgorithm)
public static javax.crypto.Mac getMac(HashAlgorithm hashAlgorithm)
public static void registerBouncyCastle()
public static int createXorVerifier2(java.lang.String password)
password - the password
public static java.lang.String xorHashPassword(java.lang.String password)
public static java.lang.String xorHashPasswordReversed(java.lang.String password)
public static int createXorVerifier1(java.lang.String password)
password - the password
public static int createXorKey1(java.lang.String password)
password - the password
public static byte[] createXorArray1(java.lang.String password)
password - the password
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||