0
我有java代碼加密密碼,目標C AES加密等於Java版本
public static String encryptToString(String content,String password) throws IOException {
return parseByte2HexStr(encrypt(content, password));
}
private static byte[] encrypt(String content, String password) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(password.getBytes());
kgen.init(128, secureRandom);
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("AES");
byte[] byteContent = content.getBytes("utf-8");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] result = cipher.doFinal(byteContent);
return result;
} catch (Exception e) {
log.error(e.getMessage(),e);
}
return null;
}
public static String parseByte2HexStr(byte buf[]) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < buf.length; i++) {
String hex = Integer.toHexString(buf[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
sb.append(hex.toUpperCase());
}
return sb.toString();
}
現在我需要加密/用Objective-C的解密,我做了很多的搜索,沒有方法將生成相同的加密輸出。
什麼是與java代碼相等的objective-c版本代碼?
測試用例:encryptToString(「測試」,「密碼」)=> DA180930496EC69BFEBA923B7311037A
不,你有沒有檢查它? – xfx
是的,它顯示了CommonCrypto中的AES功能是如何工作的。憑藉此知識,您可以輕鬆地將您的Java代碼轉換爲Objective-C。 – Cocoanetics
是的,如果我用java版本指定相同的關鍵字節,這個工作正常,現在的問題是如何生成/計算正確的關鍵。 – xfx