Php ile Geri Döndürülebilir Şifreler Oluşturmak

Ana Sayfa Blog Php ile Geri Döndürülebilir Şifreler Oluşturmak

Php ile Geri Döndürülebilir Şifreler Oluşturmak

2013 yılında “Php ile Geri Döndürülebilir Şifreler Oluşturmak” başlıklı bir makale yayınlamıştım, bu aralar o makaleden dolayı dönüşler almaktayım. Sebebi ise o makaledeki yöntemde kullanılan Mcrypt kütüphanesinin Php’nin yeni sürümlerinde bulunmaması.

Hem alternatif olması hem de ek bir bağımlılık gerektirmemesi için aşağıdaki sınıfı geliştirdim.

Gönlünüzce kullanabilirsiniz:

Sınıf

<?php

/*
 * A "Reversible" password encryption routine by Sinan Eldem
 * www.sinaneldem.com.tr
 * V. 2.9
 * 18.07.2018 11:15
 */

class MyHash {
    public function encode($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);
    }

    public function decode($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;
    }
}

$key    = '123abc!#,678def';
$string = 'Merhaba Dünya!';

$encoded = (new MyHash)->encode($string, $key);
$decoded = (new MyHash)->decode($encoded, $key);

echo $encoded; // s5akm8LExEFn7/KlscWG
echo '
'; echo $decoded; // Merhaba Dünya!

Keyifli kodlamalar dilerim.

Sinan Eldem

Fullstack Web Developer

Laravel Framework ile PHP ve MySQL üzerine özel ders, danışmanlık ve web programcılığı hizmetleri veriyorum.

Danışmak istedikleriniz ile ilgili benimle irtibat kurabilirsiniz.

Benzer Yazılar

Repository Pattern (Ambar Deseni) Nedir?

Repository (Ambar) deseni iş mantığınızı veri kaynağınızdan soyutlamanın bir yoludur. Veri getirme kodunuzun üstünde ekstra bir katman olup değişik yollarla kullanılabilmektedir.

The Single Responsibility Principle (Tek Bir Sorumluluk İlkesi)

Tek Bir Sorumluluk İlkesi bir sınıfın bir ve yalnız bir değiştirme sebebi olmasını belirtir. Diğer bir deyişle, bir sınıfın kapsam ve sorumluluğu dar odaklı olmalıdır.

Solid İlkeleri (Solid Principles)

Merhaba arkadaşlar,

Daha sonra her biri için ayrı ayrı sayfalar oluşturarak detaylandıracağım Solid Prensiplerine değinmek istiyorum.

Yorumlar