我需要使用密钥在 android 中加密某个文本。在 PHP 中,加密代码如下所示
$this->securekey = hash('sha256',$textkey,TRUE);
$this->iv = mcrypt_create_iv(32, MCRYPT_DEV_URANDOM);
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->securekey, $input, MCRYPT_MODE_ECB, $this->iv));
对于 Base64,我在 Netbeans 中为我的 Android 应用程序添加了来自 apache.org (commons-codec-1.6.jar) 的 commons 编解码器。代码中没有错误。但是当我运行应用程序并调用使用编解码器的函数时,应用程序停止并需要前关闭。
在 logCat 中说:
Android Runtime: java.lang.NoSuchMethodError:
org.apache.commons.codec.binary.Base64.decodeBase64
这是我的代码:
public static String crypt(String input, String key){
byte[] crypted = null;
try{
SecretKeySpec skey = new SecretKeySpec(org.apache.commons.codec.binary.Base64.decodeBase64(key), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skey);
crypted = cipher.doFinal(input.getBytes());
}catch(Exception e){
}
return org.apache.commons.codec.binary.Base64.encodeBase64String(crypted);
}
我不确定我的代码是否与 PHP 代码进行相同的加密。我在 Android 和 PHP 之间找到了这个链接http://www.androidsnippets.com/encrypt-decrypt-between-android-and-php但它不使用 Base64,仅用于 mcrypt_encrypt。谁能帮我获得与 PHP 服务器相同的加密。
提前致谢。