Verschlüsselung in Android entspricht MCRYPT_RIJNDAEL_256 von PHP
Ich benutze den folgenden PHP-Code für die Verschlüsselung:
$enc_request = base64_encode(
mcrypt_encrypt(MCRYPT_RIJNDAEL_256,
$this->_app_key,
json_encode($request_params),
MCRYPT_MODE_ECB)
);
Versuchen Sie nun, das in Android zu verschlüsseln und die andere verschlüsselte Zeichenfolge zu erhalten. Unten ist der Android-Code:
public void enc(){
byte[] rawKey = getRawKey("my_key".getBytes());
SecretKeySpec skeySpec = new SecretKeySpec(rawKey, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal("my_message".getBytes());
String result=Base64.encodeToString(encrypted, Base64.DEFAULT);
}
private static byte[] getRawKey(byte[] seed) throws Exception {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
sr.setSeed(seed);
kgen.init(256, sr);
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
return raw;
}
Könnte mir jemand helfen, wo ich mich irre? Und erhalten Sie die gleiche korrekte verschlüsselte Zeichenfolge auch in Android.