Simpel krypteringsklasse

Her kan du dele din kode med andre! Hvis du f.eks har lavet en super lækker CSS menu eller et smart php eller Jquery script kan du altså glæde andre og måske få lidt ros for det her :-)
Besvar
Jepsen
Begynder
Indlæg: 18
Tilmeldt: 8. jan 2015, 03:53

Simpel krypteringsklasse

Indlæg af Jepsen » 10. jan 2015, 16:25

Hejsa,

Jeg skrev i forbindelse med et mindre projekt en krypteringsklasse, hvor der er mulighed for at kryptere og dekryptere forskellig information.
Jeg burde nok nævne, det er ikke er optimalt, at kryptere password osv., til brugersystemet, hash dem i stedet!

Der ligger ikke nøgler ude fra scriptet og der bruges samtidige ikke besøgs-specifikke informationer, så i den forstand er det ikke super sikkert, men kan forestille mig, at det giver jer en ganske fin boilerplate.

Brug den som i har lyst :-)

Kode: Vælg alt

<?php
class Encryption
{
	
	/**
	 * A private static variable which contains a key used in the encrypt, decrypt and hash methods.
	 * @var string
	 */
	private static $key = '!@#$%^&*';
	
	/**
	 * encrypt
	 * Create a base64-encrypted string based on an original string using mcrypt "rijndael" and CBC
	 * @param  string $string The string to encrypt
	 * @return string      	  The encrypted string
	 */
	public static function encrypt($string)
	{
		$_iv              = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);
		$_encryptedString = base64_encode($_iv . mcrypt_encrypt(MCRYPT_RIJNDAEL_256, hash('sha256', self::$key, true), $string, MCRYPT_MODE_CBC, $_iv));
		return $_encryptedString;
	}
	/**
	 * decrypt
	 * Decrypt an encrypted string based on self::encrypt.
	 * @param  string $string The encrypted string
	 * @return string         The decrypted string
	 */
	public static function decrypt($string)
	{
		$data             = base64_decode($string);
		$_iv              = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC));
		$_decryptedString = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, hash('sha256', self::$key, true), substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC)), MCRYPT_MODE_CBC, $_iv), "\0");
		return $_decryptedString;
	}
}
Skriv endelig, hvis I oplever problemer.

cristian
Moderator
Moderator
Indlæg: 865
Tilmeldt: 26. sep 2011, 21:31
Kontakt:

Re: Simpel krypteringsklasse

Indlæg af cristian » 13. jan 2015, 00:06


Besvar