|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.google.bitcoin.crypto.KeyCrypterScrypt
public class KeyCrypterScrypt
This class encrypts and decrypts byte arrays and strings using scrypt as the key derivation function and AES for the encryption.
You can use this class to:
1) Using a user password, create an AES key that can encrypt and decrypt your private keys. To convert the password to the AES key, scrypt is used. This is an algorithm resistant to brute force attacks. You can use the ScryptParameters to tune how difficult you want this to be generation to be.
2) Using the AES Key generated above, you then can encrypt and decrypt any bytes using the AES symmetric cipher. Eight bytes of salt is used to prevent dictionary attacks.
| Field Summary | |
|---|---|
static int |
BLOCK_LENGTH
The size of an AES block in bytes. |
static int |
KEY_LENGTH
Key length in bytes. |
static int |
SALT_LENGTH
The length of the salt used. |
| Constructor Summary | |
|---|---|
KeyCrypterScrypt()
Encryption/ Decryption using default parameters and a random salt |
|
KeyCrypterScrypt(Protos.ScryptParameters scryptParameters)
Encryption/ Decryption using specified Scrypt parameters. |
|
| Method Summary | |
|---|---|
byte[] |
decrypt(EncryptedPrivateKey privateKeyToDecode,
org.spongycastle.crypto.params.KeyParameter aesKey)
Decrypt bytes previously encrypted with this class. |
org.spongycastle.crypto.params.KeyParameter |
deriveKey(CharSequence password)
Generate AES key. |
EncryptedPrivateKey |
encrypt(byte[] plainBytes,
org.spongycastle.crypto.params.KeyParameter aesKey)
Password based encryption using AES - CBC 256 bits. |
boolean |
equals(Object obj)
|
Protos.ScryptParameters |
getScryptParameters()
|
Protos.Wallet.EncryptionType |
getUnderstoodEncryptionType()
Return the EncryptionType enum value which denotes the type of encryption/ decryption that this KeyCrypter can understand. |
int |
hashCode()
|
String |
toString()
|
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final int KEY_LENGTH
public static final int BLOCK_LENGTH
public static final int SALT_LENGTH
| Constructor Detail |
|---|
public KeyCrypterScrypt()
public KeyCrypterScrypt(Protos.ScryptParameters scryptParameters)
scryptParameters - ScryptParameters to use
NullPointerException - if the scryptParameters or any of its N, R or P is null.| Method Detail |
|---|
public org.spongycastle.crypto.params.KeyParameter deriveKey(CharSequence password)
throws KeyCrypterException
deriveKey in interface KeyCrypterpassword - The password to use in key generation
KeyCrypterException
public EncryptedPrivateKey encrypt(byte[] plainBytes,
org.spongycastle.crypto.params.KeyParameter aesKey)
throws KeyCrypterException
encrypt in interface KeyCrypterKeyCrypterException - if encryption was unsuccessful
public byte[] decrypt(EncryptedPrivateKey privateKeyToDecode,
org.spongycastle.crypto.params.KeyParameter aesKey)
throws KeyCrypterException
decrypt in interface KeyCrypterprivateKeyToDecode - The private key to decryptaesKey - The AES key to use for decryption
KeyCrypterException - if bytes could not be decoded to a valid keypublic Protos.ScryptParameters getScryptParameters()
public Protos.Wallet.EncryptionType getUnderstoodEncryptionType()
getUnderstoodEncryptionType in interface KeyCrypterpublic String toString()
toString in class Objectpublic int hashCode()
hashCode in class Objectpublic boolean equals(Object obj)
equals in class Object
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||