private AESEngine makeMacCipher() { // Stateless AES encryption AESEngine macc = new AESEngine(); macc.init(true, new KeyParameter(mac)); return macc; }
/** * Create a final key from the parameters passed */ public static byte[] getFinalKeyDigest(byte[] key, byte[] masterSeed, byte[] transformSeed, long transformRounds) { AESEngine engine = new AESEngine(); engine.init(true, new KeyParameter(transformSeed)); // copy input key byte[] transformedKey = new byte[key.length]; System.arraycopy(key, 0, transformedKey, 0, transformedKey.length); // transform rounds times for (long rounds = 0; rounds < transformRounds; rounds++) { engine.processBlock(transformedKey, 0, transformedKey, 0); engine.processBlock(transformedKey, 16, transformedKey, 16); } MessageDigest md = getMessageDigestInstance(); byte[] transformedKeyDigest = md.digest(transformedKey); md.update(masterSeed); return md.digest(transformedKeyDigest); }
cipher.init(true, new KeyParameter(key)); byte[] encryptedHalf1 = new byte[16]; byte[] encryptedHalf2 = new byte[16];
cipher.init(true, new KeyParameter(key)); byte[] encryptedHalf1 = new byte[16]; byte[] encryptedHalf2 = new byte[16];
byte[] key = new byte[32]; System.arraycopy(passwordDerived, 32, key, 0, 32); cipher.init(false, new KeyParameter(key)); byte[] secret = new byte[32]; cipher.processBlock(encryptedSecret, 0, secret, 0); byte[] key = new byte[32]; System.arraycopy(derived, 32, key, 0, 32); cipher.init(false, new KeyParameter(key)); byte[] decryptedHalf2 = new byte[16]; cipher.processBlock(encryptedPrivateKeyBytes, 23, decryptedHalf2, 0);
System.arraycopy(derived, 32, key, 0, 32); AESEngine cipher = new AESEngine(); cipher.init(false, new KeyParameter(key));