我有一個Java加密方法。我如何從Java加密文件加密的文件中解密objective-c
public static String encrypt(String orignal){
SecretKeySpec key = new SecretKeySpec(keyString.getBytes(), "AES");
IvParameterSpec initalVector = new IvParameterSpec(initialVectorParam.getBytes());
try{
Cipher cipher = Cipher.getInstance("AES/CFB8/NoPadding");
/////////////// encrypt /////////////////
cipher.init(Cipher.ENCRYPT_MODE, key, initalVector);
Log.d("AES", "oriByte: "+ orignal.getBytes());
int length = orignal.length();
for(int i=0; i<length; i++){
}
byte[] test = cipher.doFinal(orignal.getBytes());
Log.d("AES", "encByte: "+ test);
return bytes2Hex(test);
}catch (Exception e) {
Log.d("AES", "Encrypt Exception:"+orignal);
return "";
}
}
爲了與PHP兼容,我使用「AES/CFB8/NoPadding」選項。 在PHP中:$ sCipher = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$ sKey,$ sStr,MCRYPT_MODE_CFB,$ sIV);
我從這裏有一個Objective-c密碼。 https://gist.github.com/838614
我發現Objective-c密碼中沒有像java這樣的IvParameterSpec。 此外,getBytes方法返回一個與java不同的值。我認爲這是因爲java使用不同的編碼方式。)
那麼,我該如何在Objective-c中應用IvParameterSpec。 有沒有什麼辦法可以像Objective-C中的java那樣獲得'getBytes'的值?
對於'getBytes()',一定要指明編碼(有一個重載方法需要一個編碼參數)。 –