$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');
Вы определяете строку, используя одинарные кавычки, и PHP не анализирует строки с разделителями одиночной кавычки. Чтобы получить переменную интерполяцию, вам нужно использовать двойные кавычки или конкатенацию строк (или их комбинацию). См. http://php.net/manual/en/language.types.string.php для получения дополнительной информации.
Также вы должны проверить, что mysql_query вернул действительный ресурс результата, иначе fetch_ *, num_rows и т. д. не будут работать с результатом, поскольку это не результат! IE:
$username = $_POST['username']; $password = $_POST['password']; $result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username'); if( $result === FALSE ) { trigger_error('Query failed returning error: '. mysql_error(),E_USER_ERROR); } else { while( $row = mysql_fetch_array($result) ) { echo $row['username']; } }
http://us.php.net/manual/en/function.mysql-query.php для получения дополнительной информации.
Различные отпечатки SHA1 вызваны разными кодировками сертификата подписи кода.
Первый отпечаток пальца (keytool) вычисляется по байтам сертификата точно так же, как они содержатся в файле PKCS # 7 META-INF/CERT.RSA
. Длина подписи (сертификата, а не подписи кода) кодируется здесь в двух байтах, где на самом деле достаточно одного байта. Чтобы увидеть это, мы должны взглянуть на дамп ASN.1 CERT.RSA
. Есть несколько программ, которые могут это сделать, но я рекомендую dumpasn1 / GUIdumpASN Питера Гутмана. Соответствующая часть такова:
<06 09>
532 9: OBJECT IDENTIFIER
: sha1WithRSAEncryption (1 2 840 113549 1 1 5)
<05 00>
543 0: NULL
: }
<03 82 00 81>
545 129: BIT STRING
: 65 26 30 0C 41 32 63 75 e&0.A2cu
: 2F B7 DF 9A 96 37 72 1B /....7r.
Байты 82 00 81
- это байты длины BITSTRING (который является сигнатурой сертификата), закодированный в длинной форме .
В соответствии с отличительными правилами кодирования DER необходимо использовать « кратчайшее возможное кодирование длины », что было бы 81 81
. Это означает, что сертификат подписи кода не полностью закодирован DER.
Когда вы экспортировали сертификат с помощью openssl, он перекодировал сертификат в действительный DER:
<03 81 81>
489 129: BIT STRING
: 65 26 30 0C 41 32 63 75 e&0.A2cu
: 2F B7 DF 9A 96 37 72 1B /....7r.
. Поэтому Значение хеша (отпечаток пальца) сертификата отличается, оно изменилось.
Ни keytool, ни openssl не сделали что-то неправильно. Точка DER-кодирования состоит в том, что она генерирует всегда точно такое же представление байтов структур ASN.1.
Программное обеспечение, вызвавшее эту проблему, является инструментом, с помощью которого был создан сертификат с неправильным кодом подписания.