2 import java.util.HashMap;
3 import javax.crypto.spec.*;
8 HashMap table=new HashMap();
10 private Cipher encryptCipher;
11 private Cipher decryptCipher;
14 public Table(String baseurl, String password) {
15 cloud=new CloudComm(baseurl);
16 initCiphers(password);
19 private void initCiphers(String password) {
21 SecretKeySpec secret=getKey(password);
22 encryptCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
23 encryptCipher.init(Cipher.ENCRYPT_MODE, secret);
24 decryptCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
25 decryptCipher.init(Cipher.DECRYPT_MODE, secret);
26 hmac = Mac.getInstance("HmacSHA256");
28 } catch (Exception e) {
29 throw new Error("Failed To Initialize Ciphers");
33 private SecretKeySpec getKey(String password) {
35 PBEKeySpec keyspec = new PBEKeySpec(password.toCharArray());
36 SecretKey key = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256").generateSecret(keyspec);
37 SecretKeySpec secret = new SecretKeySpec(key.getEncoded(), "AES");
39 } catch (Exception e) {
40 throw new Error("Failed generating key.");