이 암호화는 초보자입니다. 나는 안드로이드와 iOS 둘 다에 대한 어플리케이션을 만들고 있는데 (AES Encryprtion을 사용하여) 서버 측에서 파일을 암호화하고 iOS와 안드로이드 어플리케이션 모두에서 클라이언트 측에서 해독해야합니다. Android 및 iOS 모두에서 AES 암호화 및 암호 해독을 수행하기 위해 인터넷에 코드가 있습니다. 제대로 작동합니다. 서버 쪽 그들은 자바를 사용하고 있습니다. 하지만 문제는 Java Encrypted File cant가 iOS 프로그램에 의해 해독 될 수 있다는 것입니다. 심지어 동일한 파일 크기를 갖지만 파일이 올바른 형식이 아닙니다. 암호 해독에 대한iOS 및 Java의 AES 암호화
public static byte[] encrypt(byte[] data, byte[] key, byte[] ivs) {
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
byte[] finalIvs = new byte[16];
int len = ivs.length > 16 ? 16 : ivs.length;
System.arraycopy(ivs, 0, finalIvs, 0, len);
IvParameterSpec ivps = new IvParameterSpec(finalIvs);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivps);
return cipher.doFinal(data);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static byte[] decrypt(byte[] data, byte[] key, byte[] ivs) {
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
byte[] finalIvs = new byte[16];
int len = ivs.length > 16 ? 16 : ivs.length;
System.arraycopy(ivs, 0, finalIvs, 0, len);
IvParameterSpec ivps = new IvParameterSpec(finalIvs);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivps);
return cipher.doFinal(data);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
아이폰 OS 코드 : 나는 아래의 코드 ...
자바 암호화 및 암호 해독 게시
- (NSData *) decryptFile:(NSString *)key withData:(NSData *)fileData {
char keyPtr[kCCKeySizeAES128+1];
bzero(keyPtr, sizeof(keyPtr));
NSString* iv = @"12345678";
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [fileData length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesDecrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,keyPtr, kCCKeySizeAES128,
iv /* initialization vector (optional) */,
[fileData bytes], dataLength, /* input */
buffer, bufferSize, /* output */
&numBytesDecrypted);
if (cryptStatus == kCCSuccess) {
//the returned NSData takes ownership of the buffer and will free it on deallocation
return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
}
free(buffer); //free the buffer;
return nil;
}
것은 나에게이 문제에 대한 모든 솔루션이나 제안을 내놔
사본 및 운동을하지 프로그래밍 붙여 넣기 아래 링크를 참조하십시오? 믿을 수가 없어 ... –
그렉 (GregS), 나는 복사 및 붙여 넣기가 작동하지 않을 것이라고 믿었다. 이 암호화 및 암호 해독에 대해 배우기 시작했습니다. 귀하의 회신에 대한 Thnx ..... – Mahes
여기에 내 Xandrus 답변을보십시오 http://stackoverflow.com/questions/17535918/aes-gets-different-results-in-ios-and-java/19219704#19219704 –