【发布时间】:2011-08-23 01:34:40
【问题描述】:
我在 Java 中有一个加密方法。
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 Cipher和java一样没有IvParameterSpec。 此外,getBytes 方法返回与 java.xml 不同的值。 (我认为这是因为java使用了不同的编码方式。)
那么,我如何在 Objective-c 中应用 IvParameterSpec。 有什么方法可以像 Objective-c 中的 java 一样获取 'getBytes' 值?
【问题讨论】:
-
对于
getBytes(),请务必指明编码(有一个采用编码参数的重载方法)。
标签: java iphone ios encryption