AES256暗号化方式を使用してBlackBerryでデータを暗号化したい。要件は、パディングなしで暗号化することです。「AES/ECB/NoPadding」。16バイトの配列を渡していますが、返される暗号化されたデータは長さ32の16進値です。次のことを試しましたが、正しい結果が得られません。戻り値は、予想される暗号化された値とは異なります。Androidでテスト済み。AndroidとBlackBerryの間の結果は集計されません。私は次の方法を使用しました:
public static String EncryptData(byte[] keyData, byte[] data) throws Exception {
String encryptedData = "";
AESKey key = new AESKey(keyData);
NoCopyByteArrayOutputStream out = new NoCopyByteArrayOutputStream();
AESEncryptorEngine engine = new AESEncryptorEngine(key);
BlockEncryptor encryptor = new BlockEncryptor(engine, out);
encryptor.write(data, 0, data.length);
int finalLength = out.size();
byte[] cbytes = new byte[finalLength];
System.arraycopy(out.getByteArray(), 0, cbytes, 0, finalLength);
encryptedData = getHexString(cbytes);
return encryptedData;
}
誰か案内してもらえますか?
編集:以下は同等のAndroidコードです:
Dim Kg As KeyGenerator
Dim c As Cipher
c.Initialize("AES/ECB/NoPadding") ' just "DES" actually performs "DES/ECB/PKCS5Padding".
Kg.Initialize("DESede")
Kg.KeyFromBytes(key)
bytes = Kg.KeyToBytes
msg_data = c.Encrypt(msg_data, Kg.key, False)
Return Bconv.HexFromBytes(msg_data)