webForumDet fria alternativet
Logga in / Bli medlem

AES_DECRYPT returnerar null

Databaser & SQL

4 svar · 583 visningar · startad av orvar

Medlem sedan feb. 2001105 inlägg
Frågan#1

Jag har följande mySQL-tabell ("meddelande"):
id (int)
meddelande (text)
emailadress (text)
referens (text)
pass (text)

Jag leker lite med kryptering och har följande kod:

<?php
	$open = mysql_connect('localhost', 'database_user', 'database_pass');
	mysql_select_db('database_name');

	session_start();
	$_SESSION['session_name'] = "ok";
	if (isset($_SESSION['session_name'])) {

	if ($_GET['m'] == "skriv"){
		$password = md5(uniqid(rand(), true));
		$query = "INSERT INTO meddelande (meddelande, emailadress, referens, pass) VALUES (AES_ENCRYPT('" . $_POST["meddelande"] . "','" . $password . "'), '" . $_POST["emailadress"] . "', '" . $_POST["referens"] . "', '" . md5($password) . "')";
		if (mysql_query($query)) {
			echo "Lösenordet är " . $password;
			session_unset();
			session_destroy();
			mysql_close($open);
		} else {
			echo("Något blev fel<BR>");
			echo ($query);
			mysql_close($open);
		}
	} elseif (strlen($_GET['p']) >= 1){
		$query = "SELECT AES_DECRYPT('meddelande', '" . $_GET['p'] . "') AS dekrypteratmeddelande FROM meddelande WHERE pass = '" . md5($_GET['p']) . "'";
		echo $query . "<br>";
		$data = mysql_query($query);
		while ($rad = mysql_fetch_array($data)) {
			echo $rad["dekrypteratmeddelande"];
		}
		mysql_close($open);
	} else {
		echo "
			<HTML><BODY>
			<CENTER>
			<TABLE WIDTH=\"520\" ALIGN=\"top\" BORDER=\"0\" CELLPADDING=\"1\" CELLSPACING=\"0\" BGCOLOR=\"#000000\"><TR><TD>
			<TABLE WIDTH=\"100%\" ALIGN=\"top\" BORDER=\"0\" CELLPADDING=\"3\" CELLSPACING=\"0\" BGCOLOR=\"#FFFFFF\">
				<TR VALIGN=\"top\">
					<TD WIDTH=\"210\">
						<FORM METHOD=\"post\" ACTION=\"?m=skriv\">
						<TEXTAREA NAME=\"meddelande\" ROWS=\"5\" COLS=\"30\">skriv ditt meddelande här</TEXTAREA><BR>
						<INPUT TYPE=\"text\" NAME=\"emailadress\" VALUE=\"Emailadress\" SIZE=30> Emailadress<BR>
						<INPUT TYPE=\"text\" NAME=\"referens\" VALUE=\"Referens\" SIZE=30> Referens<BR>
						<INPUT TYPE=\"submit\" NAME=\"add\" VALUE=\"OK!\">
						</FORM>
					</TD>
				</TR>
			</TABLE></TD></TR></TABLE></CENTER></BODY></HTML>
		";
	}
	} else {
		echo("Något är fel!");
		mysql_close($open);
	}
	
?>

Problemet jag har är att AES_DECRYPT allting returnerar NULL.

Någon med lite input?

Tack

Medlem sedan juni 20008 205 inlägg
#2

Eftersom det här inte är ett PHP-forum rekommenderas att du visar hur den färdiga SQL-frågan som ställs mot databasen ser ut, samt vad databasraden du ställer den mot innehåller.

Medlem sedan feb. 2001105 inlägg
#3

sorry!

SQL-frågan som skriver och krypterar data i tabellen ser ut så här:

INSERT INTO meddelande (meddelande, emailadress, referens, pass) VALUES (AES_ENCRYPT('ett meddelande','685793f48484d84c75164960afcb5b86'), 'Emailadress', 'Referens', 'b340ac1f008c6289961e203e50796061')

Frågan som hämtar och dekrypterar ser ut så här:

 
SELECT AES_DECRYPT('meddelande', '685793f48484d84c75164960afcb5b86') AS dekrypteratmeddelande FROM meddelande WHERE pass = 'b340ac1f008c6289961e203e50796061'

Tabellraden ser ut så här:
id: 0
meddelande: âØ@ðPåw9qÌZ&]
emailadress: Emailadress
referens: Referens
pass: b340ac1f008c6289961e203e50796061

tack!

Medlem sedan juni 20008 205 inlägg
#4

Första parametern till AES_DECRYPT är väl det krypterade värdet? Du skickar in en konstant sträng. Ta bort fnuttarna runt 'meddelande' så lär det hända grejer (eftersom du då refererar till kolumnen meddelande istället för strängen "meddelande").

Medlem sedan feb. 2001105 inlägg
#5

ah, det funkade!

tack!

251 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)