ASI http 라이브러리를 사용하여 AES 암호화 알고리즘 (ECB) &을 사용하고 있지만 권한이 부여되지 않았기 때문에 요청이 실패했습니다. 아래 코드를 첨부했습니다.요청 실패 Asi HTTP
암호화 너 한테. (AES 암호화 128)
+ (NSData*)encryptData:(NSData*)data key:(NSData*)key iv:(NSData*)iv;
{
NSData* result = nil;
// setup key
unsigned char cKey[FBENCRYPT_KEY_SIZE];
bzero(cKey, sizeof(cKey));
[key getBytes:cKey length:FBENCRYPT_KEY_SIZE];
// setup iv
char cIv[FBENCRYPT_BLOCK_SIZE];
bzero(cIv, FBENCRYPT_BLOCK_SIZE);
if (iv) {
[iv getBytes:cIv length:FBENCRYPT_BLOCK_SIZE];
}
// setup output buffer
size_t bufferSize = [data length] + FBENCRYPT_BLOCK_SIZE;
void *buffer = malloc(bufferSize);
// do encrypt
size_t encryptedSize = 0;
///CCCryptorStatus cryptStatus2 = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, [data bytes], [data length], NULL, [cipherData bytes], outLength, [decodedData mutableBytes], [decodedData length], &outLength);
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
FBENCRYPT_ALGORITHM,
kCCOptionPKCS7Padding | kCCOptionECBMode,
cKey,
FBENCRYPT_KEY_SIZE,
cIv,
[data bytes],
[data length],
buffer,
bufferSize,
&encryptedSize);
if (cryptStatus == kCCSuccess) {
result = [NSData dataWithBytesNoCopy:buffer length:encryptedSize];
} else {
free(buffer);
NSLog(@"[ERROR] failed to encrypt|CCCryptoStatus: %d", cryptStatus);
}
return result;
}
해독 너 한테. (AES 128 암호 해독)
+ (NSData*)decryptData:(NSData*)data key:(NSData*)key iv:(NSData*)iv;
{
NSData* result = nil;
// setup key
unsigned char cKey[FBENCRYPT_KEY_SIZE];
bzero(cKey, sizeof(cKey));
[key getBytes:cKey length:FBENCRYPT_KEY_SIZE];
// setup iv
char cIv[FBENCRYPT_BLOCK_SIZE];
bzero(cIv, FBENCRYPT_BLOCK_SIZE);
if (iv) {
[iv getBytes:cIv length:FBENCRYPT_BLOCK_SIZE];
}
// setup output buffer
size_t bufferSize = [data length] + FBENCRYPT_BLOCK_SIZE;
void *buffer = malloc(bufferSize);
// do decrypt
size_t decryptedSize = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
FBENCRYPT_ALGORITHM,
kCCOptionECBMode,
cKey,
FBENCRYPT_KEY_SIZE,
cIv,
[data bytes],
[data length],
buffer,
bufferSize,
&decryptedSize);
if (cryptStatus == kCCSuccess) {
result = [NSData dataWithBytesNoCopy:buffer length:decryptedSize];
} else {
free(buffer);
NSLog(@"[ERROR] failed to decrypt| CCCryptoStatus: %d", cryptStatus);
}
return result;
}
기본 64 ALGO.
- (NSString *)base64EncodedString
{
size_t outputLength;
char *outputBuffer =
NewBase64Encode([self bytes], [self length], true, &outputLength);
NSString *result =
[[[NSString alloc]
initWithBytes:outputBuffer
length:outputLength
encoding:NSASCIIStringEncoding]
autorelease];
free(outputBuffer);
return result;
}
필요한 조치를 수행하십시오. 미리 감사드립니다.
무슨 문제가 암호화라고 생각합니까? 키의 16 진 덤프는 어디에 있고, 데이터는 들어갔다가 나오지? ECB는 이미지에 특히 안전하지 않지만 코드를 설정해야합니다. 저자가 그것을 사용하지 않을 것을 제안 할 때 ASI를 사용하는 이유는 무엇입니까, AFNetworking은 현재이며 적극적으로 유지 관리되고 있습니다. Apple에서 제공하는 타사 Base64 코드를 사용하는 이유는 무엇입니까? 왜 ARC를 사용하지 않습니까? – zaph
나는 대부분의 질문이 선택된 제 3 자 프로젝트의 선택에 의해 대답 될 수 있다고 생각한다. RNCryptor는 현재 사용되고 사용자의 요구에 맞을 수 있습니다. – zaph
당신이 응답 주셔서 고마워하지만 거기에 CBC를 그렇지 않으면 PHP는 서버가 내 요청을 해독 할 수 없다는 사용할 수 없습니다 그래서 PHP 측면에서 구현되었습니다. – user1066642