secret_key), base64_decode($this->public_key)); $encrypted = sodium_crypto_box($msg, $nonce, $encryption_key); $encryptedArr = array(); for($i = 0; $i < strlen($encrypted); $i++){ $char = $encrypted[$i]; $ascii = ord($char); $encryptedArr[] = $ascii; } $encryptedJson = json_encode($encryptedArr); $encryptedStr = base64_encode($encryptedJson); return base64_encode($encryptedStr . "|" . $nonceStr); } private function decrypt_old($enc){ $dec = base64_decode($enc); $decArr = explode("|", $dec); if(count($decArr) < 2){ return false; } $nonceDec = base64_decode($decArr[1]); $caddec = base64_decode($decArr[0]); $nonceArr = json_decode($nonceDec); $cadArr = json_decode($caddec); $nonceF = ""; if(is_null($nonceArr)) return false; foreach($nonceArr as $asciiF){ $nonceF .= chr($asciiF); } $cadF = ""; foreach($cadArr as $asciiF){ $cadF .= chr($asciiF); } $encryption_key_dec = sodium_crypto_box_keypair_from_secretkey_and_publickey( base64_decode($this->secret_key), base64_decode($this->public_key) ); $decrypted = sodium_crypto_box_open($cadF, $nonceF, $encryption_key_dec); return $decrypted; } public function shortEnc($str){ $nonce = random_bytes(SODIUM_CRYPTO_BOX_NONCEBYTES); $encKey = sodium_crypto_box_keypair_from_secretkey_and_publickey( base64_decode($this->secret_key), base64_decode($this->public_key) ); $strEnc = sodium_crypto_box($str, $nonce, $encKey); return base64_encode($strEnc . "||" . $nonce); } public function encrypt(string $value) : string { $nonce = random_bytes(SODIUM_CRYPTO_BOX_NONCEBYTES); $encryption_key = sodium_crypto_box_keypair_from_secretkey_and_publickey( base64_decode($this->secret_key), base64_decode($this->public_key)); $encrypted = sodium_crypto_box($value, $nonce, $encryption_key); $encrypted_string = base64_encode($encrypted); $nonce_string = base64_encode($nonce); return base64_encode($encrypted_string . "|" . $nonce_string);; } public function decrypt($value) { if(gettype($value) != 'string') return false; $value_string = base64_decode($value); $value_array = explode('|', $value_string); if(count($value_array) < 2) return false; $encoded_string = base64_decode($value_array[0]); $nonce_string = base64_decode($value_array[1]); $encryption_key_dec = sodium_crypto_box_keypair_from_secretkey_and_publickey( base64_decode($this->secret_key), base64_decode($this->public_key) ); try{ $decrypted = sodium_crypto_box_open($encoded_string, $nonce_string, $encryption_key_dec); return $decrypted; }catch(ErrorException $e){ return false; }catch(SodiumException $e){ return false; } } public function shortDec($enc){ $enc = str_replace("=P=", "+", $enc); $enc = str_replace("=S=", "/", $enc); $strEnc = base64_decode($enc); $arrEnc = explode("||", $strEnc); $decKey = sodium_crypto_box_keypair_from_secretkey_and_publickey( base64_decode($this->secret_key), base64_decode($this->public_key) ); try{ return sodium_crypto_box_open($arrEnc[0], $arrEnc[1], $decKey); }catch(ErrorException $e){ return false; }catch(SodiumException $e){ return false; } } }