AES(ECB)モードを使用してデータを暗号化および復号化する1つのアプリケーションを作成しています。ブラックベリー コードの暗号化されたデータは、php コードによって正常に復号化されます。しかし、問題は、php から暗号化されたテキストを取得すると、blackberry コードでそれを復号化できないことです..例外も発生しません。
これは、テキストを暗号化および復号化するための私のコードです。
public static byte[] encrypt( byte[] keyData, byte[] data )
throws CryptoException, IOException
{
// Create the AES key to use for encrypting the data.
// This will create an AES key using as much of the keyData
// as possible.
AESKey key = new AESKey( keyData );
// Now, we want to encrypt the data.
// First, create the encryptor engine that we use for the actual
// encrypting of the data.
AESEncryptorEngine engine = new AESEncryptorEngine( key );
// Since we cannot guarantee that the data will be of an equal block
// length we want to use a padding engine (PKCS5 in this case).
PKCS5FormatterEngine fengine = new PKCS5FormatterEngine( engine );
// Create a BlockEncryptor to hide the engine details away.
ByteArrayOutputStream output = new ByteArrayOutputStream();
BlockEncryptor encryptor = new BlockEncryptor( fengine, output );
encryptor.write( data );
encryptor.close();
output.close();
return output.toByteArray();
}
public static String AESDecryption(byte[] keyData,byte[] cipherText, int dataLength ) throws CryptoException, IOException {
// Create the input stream based on the ciphertext
ByteArrayInputStream in = new ByteArrayInputStream( cipherText, 0, dataLength );
// Now create the block decryptor and pass in a new instance
// of an AES decryptor engine with the specified block length
BlockDecryptor cryptoStream = new BlockDecryptor(new AESDecryptorEngine( new AESKey( keyData )), in );
byte[] T= new byte[dataLength];
// Read the decrypted text from the AES decryptor stream and
// return the actual length read
int length= cryptoStream.read( T );
String str= new String(T);
return str;
}
前もって感謝します..