OpenSSL "Seal"

3 Cevap php

Ben C için bazı PHP kodu taşıma çalışıyorum, bu kişiler bir web API ediyorum.

Ben geldim sorun PHP kodu openssl_seal() işlevini kullanır, ama C hatta openssl ile aynı şeyi yapmak için herhangi bir yol bulmak gibi olamaz bir çağrı system().

Üzerinde PHP manuel openssl_seal():

int openssl_seal ( string $data , string &$sealed_data , array &$env_keys , array $pub_key_ids )

openssl_seal() seals (encrypts) data by using RC4 with a randomly generated secret key. The key is encrypted with each of the public keys associated with the identifiers in pub_key_ids and each encrypted key is returned in env_keys . This means that one can send sealed data to multiple recipients (provided one has obtained their public keys). Each recipient must receive both the sealed data and the envelope key that was encrypted with the recipient's public key.

Ne bu uygulamak için en iyi yolu olurdu? Gerçekten not bariz nedenlerle, bir PHP komut dosyası için her zaman dışarı demeyi tercih ediyorum.

3 Cevap

Sen OpenSSL kütüphanesine C arayüzünün EVP ("Zarf Şifreleme") parçası sonra şunlardır:

#include <openssl/evp.h>

int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
                 unsigned char **ek, int *ekl, unsigned char *iv,
                 EVP_PKEY **pubk, int npubk);
int EVP_SealUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
        int *outl, unsigned char *in, int inl);
int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out,
        int *outl);

(Eğer PHP kodu ile uyumluluk için RC4 istiyorum çünkü bu durumda, size EVP_rc4() kullanmak istiyorum için type parametre olarak EVP_SealInit()).

Eğer C + + ve sadece C Sen Crypto++, kolayca ihtiyacınız ne yapacak kullanabilirsiniz değil kullanmak için izin verilirse.

Eğer + + c yeterli bilgiye sahip yalnızca + + Kripto düşünün.