Mcrypt ile Şifreleme Sınıfı

PHP
79 lines
<?php
header('Content-Type: text/html; charset=iso-8859-9');
class SifreleCoz {
var $anahtar;
var $veri;
var $td;
var $iv;
var $bas = false;
function SifreleCoz($anahtar='',$veri=''){
if ($anahtar != ''){
$this->bas($anahtar);
}
$this->veri = $veri;
}
function bas(&$anahtar){
$this->td = mcrypt_module_open ('des', '', 'ecb', '');
$this->anahtar = substr ($anahtar, 0, mcrypt_enc_get_key_size($this->td));
$iv_boyut = mcrypt_enc_get_iv_size($this->td);
$this->iv = mcrypt_create_iv($iv_boyut, MCRYPT_RAND);
$this->bas = true;
}
function anahtarAyarla($anahtar){
$this->bas($anahtar);
}
function veriAyarla($veri){
$this->veri = $veri;
}
function &anahtarGetir(){
return $this->anahtar;
}
function &veriGetir(){
return $this->veri;
}
function &sifrele($veri=''){
return $this->_sifre('sifrele',$veri);
}
function &coz($veri=''){
return $this->_sifre('coz',$veri);
}
function kapat(){
mcrypt_module_close($this->td);
}
function &_sifre($mode,&$veri){
if ($veri != ''){
$this->veri = $veri;
}
if ($this->bas){
if (mcrypt_generic_init($this->td,$this->anahtar,$this->iv) != -1){
if ($mode == 'sifrele'){
$this->veri = mcrypt_generic($this->td, $this->veri);
}elseif($mode == 'coz'){
$this->veri = mdecrypt_generic($this->td, $this->veri);
}
mcrypt_generic_deinit($this->td);
return $this->veri;
}else{
trigger_error('Error basialising '.$mode.'ion handle',E_USER_ERROR);
}
}else{
trigger_error('Key not set. Use anahtarAyarla() method',E_USER_ERROR);
}
}
}
$sc = new SifreleCoz('gizli anahtar');
$kullanici = 'kullanici';
$sifre = 'sifre';
$s_kullanici = $sc->sifrele($kullanici);
$s_sifre = $sc->sifrele($sifre);
echo 'sifreli kullanici: '.$s_kullanici;
echo '<br>';
echo 'sifreli sifre: '.$s_sifre;
echo '<br>';
echo 'sifresiz kullanici: '.$sc->coz($s_kullanici);
echo '<br>';
echo 'sifresiz sifre: '.$sc->coz($s_sifre);
echo '<br>';
$sc->kapat();
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

Markdown
4 lines
sifreli kullanici: £ÈÄN·/©„İ·ÂÒ·ñ£·
sifreli sifre: rt·ï§ğ
sifresiz kullanici: kullanici
sifresiz sifre: sifre
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Şifreleyici Sınıfı

PHP
42 lines
<?php
class Sifreleyici{
private $_anahtar;
public function __construct($anahtar = '', $md5 = true){
$anahtar = str_split($md5 ? md5($anahtar) : sha1($anahtar), 1);
$sinyal = false;
$toplam = 0;
foreach($anahtar as $karakter){
if($sinyal){
$toplam -= ord($karakter);
$sinyal = false;
}else{
$toplam += ord($karakter);
$sinyal = true;
}
}
$this->_anahtar = abs($toplam);
}
public function sifrele($metin){
$metin = str_split($metin, 1);
$sonuc = '';
foreach($metin as $karakter){
$sonuc .= sprintf("%03x", ord($karakter) + $this->_anahtar);
}
return $sonuc;
}
public function coz($metin){
$sonuc = '';
$metin = str_split($metin, 3);
foreach($metin as $karakter){
$sonuc .= chr(hexdec($karakter) - $this->_anahtar);
}
return $sonuc;
}
}
$anahtar = "asd";
$metin = "MerhabaDünya";
$s = new Sifreleyici($anahtar);
echo $es = $s->sifrele($metin);
echo "<br>";
echo $des = $s->coz($es);
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

 

Zamana ve Anahtara Göre Değişken Şifreleme Sınıfı

PHP
48 lines
<?php
class Sifreleyici{
var $anahtar;
function Sifreleyici($anahtar){
$this->anahtar = $anahtar;
}
function anahtardegistir($anahtar){
$this->anahtar = $anahtar;
}
function anahtarED($metin) {
$sifrele_anahtar = md5($this->anahtar);
$ctr=0;
$topla = "";
for ($i=0;$i<strlen($metin);$i++) {
if ($ctr==strlen($sifrele_anahtar)) $ctr=0;
$topla.= substr($metin,$i,1) ^ substr($sifrele_anahtar,$ctr,1);
$ctr++;
}
return $topla;
}
function sifrele($metin){
srand((double)microtime()*1000000);
$sifrele_anahtar = md5(rand(0,32000));
$ctr=0;
$topla = "";
for ($i=0;$i<strlen($metin);$i++){
if ($ctr==strlen($sifrele_anahtar)) $ctr=0;
$topla.= substr($sifrele_anahtar,$ctr,1) .
(substr($metin,$i,1) ^ substr($sifrele_anahtar,$ctr,1));
$ctr++;
}
return base64_encode($this->anahtarED($topla));
}
function coz($metin) {
$metin = $this->anahtarED(base64_decode($metin));
$topla = "";
for ($i=0;$i<strlen($metin);$i++){
$md5 = substr($metin,$i,1);
$i++;
$topla.= (substr($metin,$i,1) ^ $md5);
}
return $topla;
}
}
$c=new Sifreleyici("asd");
echo $c->sifrele("12345678");
echo $c->coz("VGoJPwM/B2ACNl8+BWhSOQ==");
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

Markdown
2 lines
VGoJPwM/B2ACNl8+BWhSOQ==
12345678
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Kullanıcı Tanımlı MD5 Şifreleme

PHP
45 lines
<?php
define("ktMD5_CODE","GuvenliKodBuraya"); //Your eMD5 server-side code
function ktMD5($metin){
return ktMD5::hash($metin);
}
class ktMD5 {
static function ikili($metin){
$cikti=null;
$i=0;while($i < strlen($metin)){
$cikti .= "+". str_pad(decbin(ord(substr($metin,$i++,1))), 8, "0", STR_PAD_LEFT);
}
return $cikti;
}
static function dogrula($metin1,$metin2){
if($metin1 != "+" && $metin2 != "+"){
if($metin1 xor $metin2){
return "1";
}else{
return "0";
}
}else{
return "+";
}
}
static function hash($metin){
if(!defined("ktMD5_CODE")){exit("<b>hata: </b> ktMD5_code tanımlanmadı");}
$metin = trim($metin);$s = md5(ktMD5_CODE);$metin = md5($metin);
$i=0;while($i != 32){$dizi_metin[] = substr($metin,$i,8);$i=$i+8;}
$i=0;while($i != 32){$dizi_s[] = substr($s,$i,8);$i=$i+8;}
$metin1 = ktMD5::ikili($dizi_s[0].$dizi_metin[1].$dizi_s[2].$dizi_metin[3]);
$metin2 = ktMD5::ikili($dizi_metin[0].$dizi_s[1].$dizi_metin[2].$dizi_s[3]);
$kombin=null;
$e=0;
while($e < strlen($metin1)){
$kombin .= ktMD5::dogrula(substr($metin1,$e,1),substr($metin2,$e,1));
$e++;
}
$cikti = md5($kombin);
return $cikti;
}
}
echo MD5("1234568");
echo "<br>";
echo ktMD5("1234568");
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

Markdown
2 lines
fe743d8d97aa7dfc6c93ccdc2e749513
e32f8d4f9b769346a74fe8d1a82c5e56
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Rastgele Şifre Oluşturma,Tuzlu Şifreleme ve Doğrulama

PHP
44 lines
<?php
class Sifre {
var $tuz;
function sifrele($sifre, $tuz = '') {
$this->tuz=$tuz;
$buyu = '$1$';
$karakterler = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
if (strlen($this->tuz) < 8) {
mt_srand ((double) microtime() * 1000000);
for ($i = 8; $i > strlen($this->tuz);) {
$this->tuz .= $karakterler{mt_rand (0, strlen($karakterler)-1)};
}
}
$passwd = crypt($sifre, $buyu . $this->tuz);
return($passwd);
}
function kontrol($sifre, $sifreli) {
$test = $this->sifrele($sifre, substr($sifreli, 3, 8));
if ($test == $sifreli) {
return(true);
}else{
return(false);
}
}
function rastgeleSifreUret() {
$karakterler = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$this->tuz=mt_srand ((double) microtime() * 1000000);
for ($i = 8; $i > strlen($this->tuz);) {
$this->tuz .= $karakterler{mt_rand (0, strlen($karakterler)-1)};
}
return($this->tuz);
}
}
$p = new Sifre;
echo $rastgele= $p->rastgeleSifreUret();
echo "<br>";
echo $sifreli = $p->sifrele($rastgele,$tuz=rand(1,2));
echo "<br>";
if ($p->kontrol($rastgele,$sifreli)) {
echo "Doğru Şifre";
}else{
echo "Hatalı Şifre";
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

Markdown
3 lines
h95Pjaec
$1$1xuDtzzC$VcOdiz8wCJRBZgdHhYjWt1
Doğru Şifre
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Şifreleri Şifrelemek ve Çözmek

PHP
48 lines
<?php
class Sifre{
var $k;
function Sifre($m){
$this->k = $m;
}
function ed($t) {
$r = md5($this->k);
$c=0;
$v = "";
for ($i=0;$i<strlen($t);$i++) {
if ($c==strlen($r)) $c=0;
$v.= substr($t,$i,1) ^ substr($r,$c,1);
$c++;
}
return $v;
}
function sifrele($t){
srand((double)microtime()*1000000);
$r = md5(rand(0,32000));
$c=0;
$v = "";
for ($i=0;$i<strlen($t);$i++){
if ($c==strlen($r)) $c=0;
$v.= substr($r,$c,1) .
(substr($t,$i,1) ^ substr($r,$c,1));
$c++;
}
return base64_encode($this->ed($v));
}
function coz($t) {
$t = $this->ed(base64_decode($t));
$v = "";
for ($i=0;$i<strlen($t);$i++){
$md5 = substr($t,$i,1);
$i++;
$v.= (substr($t,$i,1) ^ $md5);
}
return $v;
}
}
$sifre = "123456";
$cr64 = new Sifre($sifre);
$e = $cr64->sifrele($sifre);
echo "Şifreli = ".$e."<br>";
$d = $cr64->coz($e);
echo "Çözülmüş = ".$d."<br>";
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

Markdown
2 lines
Şifreli = UzYGZVBkAT8AOFBl
Çözülmüş = 123456
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Çerezleri Şifreleyerek Saklamak

PHP
43 lines
<?php
class cerezSifreleme {
var $anahtarim;
var $cerezim;
var $degerim;
var $cerezdizi;
var $cerez;
function cerezSifreleme($anahtar = 123) {
$this->anahtarim=$anahtar;
$this->cerezdizi = array();
$this->cerez= "";
$this->cerezim="";
$this->degerim="";
}
function cerezSifrele() {
$degersifrele = base64_encode($this->degerim);
for ($f=0; $f<=strlen($degersifrele)-1; $f++) {
$this->cerez .= intval(ord($degersifrele[$f]))*$this->anahtarim."|";
}
setcookie($this->cerezim,$this->cerez);
}
function cerezCoz(){
$this->cerezdizi = explode("|",$_COOKIE["$this->cerezim"]);
$this->degerim = "";
for ($f=0; $f<=count($this->cerezdizi)-2; $f++) {
$this->degerim .= strval(chr($this->cerezdizi[$f]/$this->anahtarim));
}
return(base64_decode($this->degerim));
}
function cerezSec($cerez, $deger){
$this->cerezim = $cerez;
$this->degerim = $deger;
$this->cerezSifrele();
}
function cerezAl($cerez) {
$this->cerezim = $cerez;
return $this->cerezCoz();
}
}
$veri=new cerezSifreleme(32421);
$veri->cerezSec("cerez","Merhaba");
echo "<b>".$veri->cerezAl("cerez")."</b> verisini <br><b>".$veri->cerez."</b> olarak depoluyorum.";
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

Markdown
2 lines
Merhaba verisini
3656688|3787284|3743752|5267372|4222604|3090772|3047240|4570860|3874348|3526092|2655452|2655452| olarak depoluyorum.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX