Хорошо, я сделал это, но когда я расшифровываю в php с кодом, который вы даете, большую часть времени живой мусор символов, в php это выглядит как квадраты []
пользуем этот код для шифрования в Objective-C на iPhone:
- (NSMutableData*) EncryptAES: (NSString *) key
{
char keyPtr[kCCKeySizeAES128+1];
bzero( keyPtr, sizeof(keyPtr) );
[key getCString: keyPtr maxLength: sizeof(keyPtr) encoding: NSUTF8StringEncoding];
size_t numBytesEncrypted = 0;
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
NSMutableData *output = [[NSData alloc] init];
CCCryptorStatus result = CCCrypt( kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
keyPtr, kCCKeySizeAES128,
NULL,
[self mutableBytes], [self length],
buffer, bufferSize,
&numBytesEncrypted );
output = [NSMutableData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
if( result == kCCSuccess )
{
return output;
}
return NULL;
}
И пытаясь расшифровать это, используя OpenSSL в Ruby, так:
aes = OpenSSL::Cipher::Cipher.new('AES-128-CBC')
aes.decrypt
aes.padding = 1
aes.iv = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].pack('c*')
aes.key = key
result = aes.update(d) + aes.final
Я готов использовать ЛЮБОЙ рубиновый камень. Я могу контролировать обе стороны, но я не смог заставить это работать с EzCrypto, openssl или crypt.
Кто-нибудь знает, как заставить их работать вместе?