Adam Ross
Adam Ross

Reputation: 41

How to encrypt a string in Python and decrypt that same string in PHP?

I have a string that I would like to encrypt in Python, store it as a cookie, then in a PHP file I'd like to retrieve that cookie, and decrypt it in PHP. How would I go about doing this?


I appreciate the fast responses.

All cookie talk aside, lets just say I want to encrypt a string in Python and then decrypt a string in PHP.

Are there any examples you can point me to?

Upvotes: 4

Views: 8134

Answers (5)

Imran Omar Bukhsh
Imran Omar Bukhsh

Reputation: 8071

Although a bit late. Find sample code below using the Fernet library

#Python Code - fernet 1.0 library
from cryptography.fernet import Fernet
key =  b"Gm3wFh9OiQHcVc8rcAMm8IOqKOJtk7CbrGRKVhrvXhg="
f = Fernet(key)
token = f.encrypt(b'the quick brown fox jumps over the lazy hare')
print(token)

##gAAAAABiMWVPsStLo42ExcmIqcGvRvCCmnhB5B6dc2JsOm4w-VsE9oJOuk_qYuZvHv5quQR4t_6ZjNJzAdCiDPOtESNzCreJZLwc2X-_apbqKKnBwc3KhmqL-K5X7t1uR1WXuyUEYUtW



<?php
    //PHP - kelvinmo/fernet-php v1.0.1 A
    require 'vendor/autoload.php';
    use Fernet\Fernet;
    $key = "Gm3wFh9OiQHcVc8rcAMm8IOqKOJtk7CbrGRKVhrvXhg=" ;
    $fernet = new Fernet($key);
    $token = "gAAAAABiMWVPsStLo42ExcmIqcGvRvCCmnhB5B6dc2JsOm4w-VsE9oJOuk_qYuZvHv5quQR4t_6ZjNJzAdCiDPOtESNzCreJZLwc2X-_apbqKKnBwc3KhmqL-K5X7t1uR1WXuyUEYUtW";
    echo $fernet->decode($token);

?>

Upvotes: 0

Pekka
Pekka

Reputation: 449713

If you're not talking about encryption but encoding to make sure the contents make it through safely regardless of quoting issues, special characters, and line breaks, I think base64 encoding is your best bet. PHP has base64_encode / decode() out of the box, and I'm sure Python has, too.

Note that base64 encoding obviously does nothing to encrypt your data (i.e. to make it unreadable to outsiders), and base64 encoded data grows by 33%.

Upvotes: 1

Kevin Montrose
Kevin Montrose

Reputation: 22601

Use a standard encryption scheme. The implementation is going to be equivalent in either language.

RSA is available (via third party libraries) in both languages, if you need asymmetric key crypto. So is AES, if you need symmetric keys.

Upvotes: 7

Powerlord
Powerlord

Reputation: 88816

Well, my first thought would be to use a web server that uses SSL and set the cookie's secure property to true, meaning that it will only be served over SSL connections.

However, I'm aware that this probably isn't what you're looking for.

Upvotes: 0

Related Questions