View difference between Paste ID: avmwRNBC and YjxcQuhm
SHOW: | | - or go back to the newest paste.
1
public static byte[] AES_decrypt(byte[] inputData) throws CryptoException, IOException {
2
       
3
		byte[] keyData = "Hello world".getBytes();
4
        AESKey key = new AESKey(keyData, 0, 256);
5
6
        AESDecryptorEngine engine = new AESDecryptorEngine(key);
7
        PKCS5UnformatterEngine uengine = new PKCS5UnformatterEngine(engine);
8
9
        ByteArrayInputStream input = new ByteArrayInputStream(inputData);
10
        BlockDecryptor decryptor = new BlockDecryptor(uengine, input);
11
        byte[] plaintextAndHash = new byte[1024];
12
        ByteArrayOutputStream output = new ByteArrayOutputStream();
13
        int bytesRead=0;
14
        
15
        do {
16
        	bytesRead =decryptor.read(plaintextAndHash);
17
            if(bytesRead!=-1){
18
                output.write(plaintextAndHash,0,bytesRead);
19
            }
20
        } while ( bytesRead != -1 );
21
22
        return output.toByteArray();
23
    }
24
	
25
	public static byte[] AES_decrypt2(byte[] inputData) throws CryptoException, IOException {
26
		byte[] keyData = calculateMD5("Hello world");
27
		AESKey aesKey = new AESKey(keyData);
28
		
29
		AESDecryptorEngine engine = new AESDecryptorEngine(aesKey);
30
		PKCS5UnformatterEngine uengine = new PKCS5UnformatterEngine(engine);
31
		
32
		ByteArrayInputStream istream = new ByteArrayInputStream(inputData);
33
		BlockDecryptor decryptor = new BlockDecryptor(uengine, istream);
34
		
35
		byte[] temp = new byte[100];
36
		DataBuffer dbuff = new DataBuffer();
37
		int bytesRead = 0;
38
		
39
		for (;;){
40
			bytesRead = decryptor.read(temp);
41
			dbuff.write(temp, 0, bytesRead);
42
			if (bytesRead < 100) break;
43
		}
44
		
45
		byte[] plainData = dbuff.getArray();
46
		int plainDataLength = plainData.length - SHA1Digest.DIGEST_LENGTH;
47
		byte[] decryptedData = new byte[plainDataLength];
48
		byte[] hash = new byte[SHA1Digest.DIGEST_LENGTH];
49
		
50
		System.arraycopy(plainData, 0, decryptedData, 0, plainDataLength);
51
		System.arraycopy(plainData, plainDataLength, hash, 0, SHA1Digest.DIGEST_LENGTH);
52
		
53
		SHA1Digest digest = new SHA1Digest();
54
		digest.update(plainData);
55
		byte[] hash2 = digest.getDigest();
56
		
57
		if (!Arrays.equals(hash, hash2)) throw new RuntimeException();
58
		
59
		return decryptedData;
60
	}
61
	
62
        /*
63
        Library MD5: http://mobilepit.com/10/compact-md5-class-library-for-j2me-javame-app.html
64
        */
65
	private static byte[] calculateMD5(String input){
66
		byte[] plain = input.getBytes();
67
		MD5 md5 = new MD5(plain);
68
		return md5.doFinal();
69
	}