这是我用来生成随机盐的函数:
function generateRandomString($nbLetters){
    $randString="";
    $charUniverse="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    for($i=0; $i<$nbLetters; $i++){
       $randInt=rand(0,61);
        $randChar=$charUniverse[$randInt];
        $randString=$randomString.$randChar;
    }
    return $randomString;
}
Run Code Online (Sandbox Code Playgroud)
这是针对非商业网站的.它仅用于生成salt(存储在db中并与用户提交的pw一起用于散列).
这个合适吗?我应该使用更大的字符子集,如果是这样,在PHP中有一个简单的方法吗?
在PDO示例中,我经常找到缩写$dbh并$sth使用.我想$dbh代表"数据库句柄" - 对吗?怎么样$sth?"声明处理"?
是否有充分的理由使用上述而不是$db_connection和$query(或其他适当的)?
我读到这null不是instanceof什么,但另一方面,Java 中的所有东西都扩展了Object类.
在"PHP Cookbook"中,他们说(p.589)为了正确地将传出数据的char编码设置为utf-8,有必要将default_encoding配置编辑为utf-8.
但是,我找不到这个配置php.ini.我应该简单地添加一条可以说的线default_encoding = "utf-8"吗?
我有一个;default_charset = "iso-8859-1".如你所见(;),现在它没有被激活.我应该删除分号并将其设置为"utf-8"?这会照顾默认编码吗?
我还发现了其他编码指令,我不知道该怎么办:
[iconv]
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1
...
; http://php.net/exif.encode-unicode
;exif.encode_unicode = ISO-8859-15
...
;mssql.charset = "ISO-8859-1"
...
;exif.encode_unicode = ISO-8859-15
Run Code Online (Sandbox Code Playgroud)
有什么理由我不应该简单地用它们全部替换它们utf-8?
我的print_r($view)函数产生:
View Object
(
    [viewArray:View:private] => Array
        (
            [title] => Projet JDelage
        )
)
1 <--------------
Run Code Online (Sandbox Code Playgroud)
最后的"1"是什么意思?关于如何解析输出的PHP手册不是很清楚print_r.
在下面的示例中(来自我的coursepack),我们希望为Square实例c1提供一些其他对象的引用p1,但前提是这两个对象是兼容的类型.
if (p1 instanceof Square) {c1 = (Square) p1;}
Run Code Online (Sandbox Code Playgroud)
我在这里不明白的是,我们首先检查p1确实是一个Square,然后我们仍然施展它.如果是Square,为什么演员?
我怀疑答案在于明显和实际类型之间的区别,但我仍然感到困惑......
编辑:
 
编译器将如何处理:
if (p1 instanceof Square) {c1 = p1;}
Run Code Online (Sandbox Code Playgroud)
Edit2:
 
问题是instanceof检查实际类型而不是表观类型?然后演员改变了表观类型?
谢谢,
JDelage
我是一个(接近完整的)初学者,这是我第一次尝试加密 - 实际上这可能是我第一次使用这个词了.
这是我的问题:对于非银行/军事,甚至是商业网络应用程序,选择用于密码的哈希函数的盐的正确方法是什么?
我可以轻松地为每个新用户生成一个伪随机盐,并在应用哈希函数之前将该盐附加到他们的pw.但是我仍然需要存储盐,所以大概任何能够访问哈希密码的人都会获得盐.
盐的好处只是让pw"更随机",因此打败了基于标准字典的彩虹表吗?
以下任何一个都是好的和实用的想法:
作为一个附带问题,在升级网站软件时更改盐渍哈希算法有多容易?现在感觉很噩梦.
我试图理解早期和晚期绑定之间的区别,并在此过程中意识到绑定的概念对我来说是模糊的.我想我明白它与数据作为内存字的方式与类型为一组语言特征的方式有关,但我不确定这些是正确的概念.另外,如何理解这一点有助于人们成为更好的程序员?
请注意:这个问题不是"什么是迟到的早期约束"或"两者之间的权衡取舍".这些已存在于此.
谢谢,
JDelage
data-binding language-features programming-languages data-structures
所有,
我使用以下PHP函数来为Web应用程序加密和哈希用户密码:
function stringHashing($password,$salt){
 $hashedString=$password.$salt;
 for ($i=0; $i<50; $i++){
  $hashedString=hash('sha512',$password.$hashedString.$salt);
  }
 return $hashedString;
}  
Run Code Online (Sandbox Code Playgroud)
在MySQL中存储结果字符串的最佳方法是什么?我想这是一个固定的CHAR字段?我该如何计算合适的长度?
谢谢,
JDelage
php ×5
security ×3
java ×2
coding-style ×1
data-binding ×1
encoding ×1
encryption ×1
hash ×1
instanceof ×1
mysql ×1
pdo ×1
polymorphism ×1
salt ×1
type-safety ×1
unicode ×1