Beispiel #1
0
 protected function encrypt($text)
 {
     $cryptKey = 'rTGsEReERsADqqW';
     $qEncoded = BASE64_ENCODE(MCRYPT_ENCRYPT(MCRYPT_RIJNDAEL_256, MD5($cryptKey), $text, MCRYPT_MODE_CBC, MD5(MD5($cryptKey))));
     return $qEncoded;
 }
Beispiel #2
0
 public function encrypt_session_json($USER_SENDER, $pPLAIN_JSON)
 {
     // PROCESO DE CODIFICACION LA PK ES DEL QUE ENVÍA
     // *************************************************
     // 	q=
     //	BASE64_ENCODE ({
     //			"u"	 : 4,
     //			"k"       : CRYPT_RSA_AES_KEY  = RSA_PK_PRIV ( BASE64_ENCODE ( AES_KEY ) ),
     //			"d"       : CRIPT_AES_KEY_DATA = BASE64_ENCODE ( AES_KEY     ( AES_SALT, BASE64_ENCODE ( DATA ) ) )
     //		})
     //
     //CRIPT_AES_KEY_DATA = BASE64_ENCODE ( AES_KEY     ( AES_SALT, BASE64_ENCODE ( DATA ) ) )
     //CRYPT_RSA_AES_KEY  = RSA_PK_PRIV ( BASE64_ENCODE ( AES_KEY ) )
     // Por ejemplo:
     //   DATA={"u":4,"k":"111","d": {<otro json>} }
     // Datos originales
     $DATA = $pPLAIN_JSON;
     $this->sysKrn->krn_audit_log(AUDIT_APPLICATION, __DIR__, __FILE__, __LINE__, __CLASS__, __METHOD__, __FUNCTION__, "DATA: " . $this->sysUtils->show_json_pretty_print($DATA));
     // Los codifico en BASE64
     $DATA_64 = BASE64_ENCODE($DATA);
     $this->sysKrn->krn_audit_log(AUDIT_APPLICATION, __DIR__, __FILE__, __LINE__, __CLASS__, __METHOD__, __FUNCTION__, "DATA_64: " . $DATA_64);
     // Generamos la clave aleatoria SALT para AES con la que se va a cifrar todo el mensaje
     // Esta clave ya sale en BASE64
     // Genero el SALT
     $AES_SALT = $this->secure_rand(10);
     $this->sysKrn->krn_audit_log(AUDIT_APPLICATION, __DIR__, __FILE__, __LINE__, __CLASS__, __METHOD__, __FUNCTION__, "AES_SALT: " . $AES_SALT);
     // Genero la clave AES
     // Cifrado simétrico
     $AES_ENC = $this->sysCryptAES;
     // Utilizado para cifrar la clave pública y privada y que no esté en texto plano
     $AES_ENC->setKey($AES_SALT);
     // Cifro el Mensaje con AES y su SALT aleatoria
     $CRIPT_AES_KEY_DATA = BASE64_ENCODE($AES_ENC->encrypt($DATA_64));
     $this->sysKrn->krn_audit_log(AUDIT_APPLICATION, __DIR__, __FILE__, __LINE__, __CLASS__, __METHOD__, __FUNCTION__, "CRIPT_AES_KEY_DATA: " . $CRIPT_AES_KEY_DATA);
     // El usuario quien envia en este ejemplo es: imarkket.dev@gmail.com
     // y se lo envía a interactua.dev@gmail.com, por lo que:
     // CIFRADO:
     //   SEND:    imarkket   --> cifra    --> pub ( interactua )
     // DESCIFRADO:
     //   RECIVER: interactua --> descifra --> pri ( interactua )
     // Ahora debo cifrar la clave AES con la PK PUBLICA del emisor
     $SENDER_EMAIL = $this->sysBD->user_ncod_usuario_find($USER_SENDER);
     $this->sysKrn->krn_audit_log(AUDIT_APPLICATION, __DIR__, __FILE__, __LINE__, __CLASS__, __METHOD__, __FUNCTION__, "SENDER_EMAIL: " . $SENDER_EMAIL);
     // Buscamos si tiene las 2 claves
     if (!$this->sysBD->find_PGP_key_user($SENDER_EMAIL)) {
         $this->sysKrn->krn_do_json($pSTATUS = FALSE, $pPARAM_1 = ERR_API_RUN_NOT_RSA_PK_SENDER, $pPARAM_2 = "RSA not found!!!");
     }
     // Ciframos
     $SENDER_PUB_KEY = $this->get_PGP_RSA_key($SENDER_EMAIL, 'PUBLIC');
     if (!$SENDER_PUB_KEY) {
         $this->sysKrn->krn_do_json($pSTATUS = FALSE, $pPARAM_1 = ERR_API_RUN_NOT_PGP_PUBLIC, $pPARAM_2 = "PGP not PUBLIC KEY!!!");
     }
     $this->sysKrn->krn_audit_log(AUDIT_APPLICATION, __DIR__, __FILE__, __LINE__, __CLASS__, __METHOD__, __FUNCTION__, "SENDER_PUB_KEY: \r\n" . $SENDER_PUB_KEY);
     $RSA_ENC = $this->sysCryptRSA;
     $RSA_ENC->loadKey($SENDER_PUB_KEY);
     $RSA_ENC->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
     // Ciframos la SALT
     $CRYPT_RSA_AES_KEY = BASE64_ENCODE($RSA_ENC->encrypt($AES_SALT));
     $this->sysKrn->krn_audit_log(AUDIT_APPLICATION, __DIR__, __FILE__, __LINE__, __CLASS__, __METHOD__, __FUNCTION__, "CRYPT_RSA_AES_KEY: " . $CRYPT_RSA_AES_KEY);
     // Construimos el mensaje
     $JSON = '{ "u": ' . $USER_SENDER . ', "k": "' . $CRYPT_RSA_AES_KEY . '", "d": "' . $CRIPT_AES_KEY_DATA . '" }';
     $this->sysKrn->krn_audit_log(AUDIT_APPLICATION, __DIR__, __FILE__, __LINE__, __CLASS__, __METHOD__, __FUNCTION__, "JSON: " . $this->sysUtils->show_json_pretty_print($JSON));
     $JSON_CIFRADO = BASE64_ENCODE($JSON);
     $this->sysKrn->krn_audit_log(AUDIT_APPLICATION, __DIR__, __FILE__, __LINE__, __CLASS__, __METHOD__, __FUNCTION__, "JSON_CIFRADO_TO_BASE64: " . $JSON_CIFRADO);
     return $JSON_CIFRADO;
 }