2015-11-05 2 views
0

Я использую эту функцию для простых строк зашифровать, какБыстрый эквивалент для php's openssl_encrypt?

$plain_txt = "BEGIN:VCARD 
    VERSION:2.1 
    N:Gump;Forrest 
    FN:Forrest Gump 
    ORG:Bubba Gump Shrimp Co. 
    TITLE:Shrimp Man 
    PHOTO;GIF:http://www.example.com/dir_photos/my_photo.gif 
    TEL;WORK;VOICE:(111) 555-1212 
    TEL;HOME;VOICE:(404) 555-1212 
    ADR;WORK:;;100 Waters Edge;Baytown;LA;30314;United States of America 
    LABEL;WORK;ENCODING=QUOTED-PRINTABLE:100 Waters Edge=0D=0ABaytown, LA 30314=0D=0AUnited States of America 
    ADR;HOME:;;42 Plantation St.;Baytown;LA;30314;United States of America 
    LABEL;HOME;ENCODING=QUOTED-PRINTABLE:42 Plantation St.=0D=0ABaytown, LA 30314=0D=0AUnited States of America 
    EMAIL;PREF;INTERNET:[email protected] 
    REV:20080424T195243Z 
    END:VCARD"; 
    echo "Plain Text = $plain_txt\n"; 

$encrypted_txt = encrypt_decrypt('encrypt', $plain_txt); 
echo "Encrypted Text = $encrypted_txt\n"; 

function encrypt_decrypt($action, $string) { 
$output = false; 

$encrypt_method = "AES-256-CBC"; 
$secret_key = 'This is my secret key'; 
$secret_iv = 'This is my secret iv'; 

// hash 
$key = hash('sha256', $secret_key); 

// iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning 
$iv = substr(hash('sha256', $secret_iv), 0, 16); 

if($action == 'encrypt') { 
    $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv); 
     $output = base64_encode($output); 
    } 
    else if($action == 'decrypt'){ 
     $output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv); 
    } 

    return $output; 
} 

А теперь я хотел бы расшифровать строку в быстрой или любой другой простой способ для шифрования в PHP и дешифрования в стрижа?

С уважением

[править 1] Ммм, по-видимому, OpenSSL не ИОС выбор https://developer.apple.com/library/mac/documentation/Security/Conceptual/cryptoservices/GeneralPurposeCrypto/GeneralPurposeCrypto.html

+1

Возможный дубликат [ios Swift AES Encrypt and Decrypt] (http://stackoverflow.com/questions/27072021/ios-swift-aes-encrypt-and-decrypt) –

+0

Я думаю, что большая разница между openssl_encrypt() и CCCrypt(). Вы исправили эту проблему? @alex –

ответ

-3

Ok я использую быстрый и грязный раствор и, кажется, работает, на данный момент

PHP стороне

base64_encode($plain_txt) 

А на быстрой стороне

let decodedData = NSData(base64EncodedString: plain_txt_code, options:NSDataBase64DecodingOptions(rawValue: 0)) 
     let decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding) 

Теперь в других приложениях сканера отображается только base64 и нечитаемая информация.

+1

Существует огромное различие между «шифрованием» (целью которого является то, что сообщение не может быть понято каким-либо образом третьей стороной, у которой нет ключа дешифрования) и «кодирование», которое просто преобразует один текст в другой детерминированным и легко декодированным всеми способами. SHA-256 - это * шифрование *, Base64 - * кодирование *. Вы уверены, что с ним все в порядке? –

+1

@AdamMichalik Нет, SHA-256 является алгоритмом хэширования (односторонняя функция). Шифрование всегда является аналогом, дешифрование, поэтому оно должно быть двухсторонней. SHA-256 * не * шифрование. –

+1

@ArtjomB. - Вы правы, я испортил термины (как AES, так и SHA появляются в коде OP). Прочитайте 'AES' вместо' SHA' в моем комментарии. –

Смежные вопросы