以下に示すように、「AES/CBC/PKCS5」を使用して、Android と Blackberry の暗号化コードを作成しています。アンドロイド:
byte[] encoded = {(byte) 0xA9, (byte) 0x9B, (byte) 0xC8, (byte) 0x32, (byte) 0x56, (byte) 0x35, (byte) 0xE3, (byte) 0x03,
(byte) 0xA9, (byte) 0x9B, (byte) 0xC8, (byte) 0x32, (byte) 0x56, (byte) 0x35, (byte) 0xE3, (byte) 0x03};
SecretKeySpec secretKeySpec = new SecretKeySpec(encoded, "AES");
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");//AES/CBC/PKCS5Padding
System.out.println("swapnil:"+c.getAlgorithm()+" BlockSize:"+c.getBlockSize());
c.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] input = "Hello".getBytes();
byte[] output = c.doFinal(input);
System.out.println("Swapnil: " + new String(output));
ブラックベリーの場合:
byte[] key1 = {(byte) 0xA9, (byte) 0x9B, (byte) 0xC8, (byte) 0x32, (byte) 0x56, (byte) 0x35, (byte) 0xE3, (byte) 0x03,
(byte) 0xA9, (byte) 0x9B, (byte) 0xC8, (byte) 0x32, (byte) 0x56, (byte) 0x35, (byte) 0xE3, (byte) 0x03};
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
InitializationVector iv = new InitializationVector(IV_BYTE);
//SymmetricKey key = new SymmetricKeyFactory("AES_256", key1, 0, key1.length);
AESKey aesKey = new AESKey(key1);
EncryptorOutputStream os = EncryptorFactory.getEncryptorOutputStream(aesKey, baos, "AES/CBC/PKCS5", iv);///
System.out.println("Swapnil"+os.getAlgorithm());
os.write("Hello".getBytes());
os.close();
byte[] encryptedData = baos.toByteArray();
String string = new String(encryptedData);
LabelField lblField = new LabelField(string);
add(lblField);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (CryptoTokenException e) {
e.printStackTrace();
} catch (CryptoUnsupportedOperationException e) {
e.printStackTrace();
} catch (CryptoException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
私の問題は、コードを実行するときにAndroidにあります。同じキーを持っていても、コードを実行するたびに異なる暗号化されたデータが生成されます。ブラックベリーでは、コードを実行するたびに、同じ暗号化データが生成されます。Androidも同じようにすべきだと思いますが、どういうわけかうまくいきません。
どうすればこれを修正できますか?