webForumDet fria alternativet

AES_DECRYPT returnerar null

4 svar · 581 visningar · startad av orvar

orvarMedlem sedan feb. 2001105 inlägg
#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

spangoMedlem 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.

orvarMedlem 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!

spangoMedlem 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").

orvarMedlem sedan feb. 2001105 inlägg
#5

ah, det funkade!

tack!

132 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)