Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to encrypt/decrypt an integer in PHP

Tags:

php

encryption

is there any way to make 2 way encryption/decryption for an integer (or string) Please note that I am not looking for encoding

i need something like this

crypting (100) --> 24694

crypting (101) --> 9564jh4 or 45216 or gvhjdfT or whatever ...

decrypting (24694) --> 100

I don't need encoding because it`s bijective

base64_encode(100) -->MTAw

base64_encode(101) -->MTAx

I hope I will find a way here to encrypt/decrypt PURE NUMBERS (computer love numbers, it's faster)

like image 488
Kratos Avatar asked Nov 29 '22 15:11

Kratos


2 Answers

function decrypt($string, $key) {
$result = '';
$string = base64_decode($string);
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)-ord($keychar));
$result.=$char;
}
return $result;
}

function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
like image 153
Muhammad Ali Avatar answered Dec 06 '22 00:12

Muhammad Ali


Have you tried looking into ROT-13?

More serious answer: from this SO answer, you can use:

function numhash($n) {
    return (((0x0000FFFF & $n) << 16) + ((0xFFFF0000 & $n) >> 16));
}

numhash(42);           // 2752512
numhash(numhash(42));   // 42
like image 44
Andreas Avatar answered Dec 06 '22 00:12

Andreas