如果我使用Rijndael CBC模式,我不知道为什么我们需要盐.我的理解是,即使人们知道密码,但如果没有IV,他也无法获得数据.所以从我的角度来看,密码+ IV似乎足够安全.
我有什么不对吗?
在AES中,我的理解是盐是使密码更安全的东西,它不会被添加到加密文本中.但IV是用于加密第一个消息块的东西,并将被添加到加密文本中.
我有什么不对吗?
我看到了一些代码
string password = "11111111";
byte[] salt = Encoding.ASCII.GetBytes("22222222");
Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(password, salt);
RijndaelAlg.Key = key.GetBytes(RijndaelAlg.KeySize / 8);
Run Code Online (Sandbox Code Playgroud)
我可以看到密钥是由Rfc2898DeriveBytes生成的密码和盐.然后AES通过GetBytes检索密钥.
但问题是,RFC2898DeriveBytes做了什么以及key.GetBytes(cb)做了什么?任何人都可以详细说明吗?我无法从文档中获取它.
我的代码有点问题,如果我手动输入值,查询工作正常.但如果我使用我的变量则失败.代码如下所示
my $get_meter_id = $dbh->prepare("SELECT * from t_readings where meter_serial = '21001652' AND ...");
$get_meter_id->execute() or die "Couldn't execute statement: ".$get_meter_id->errstr;
my $meter_reg_id = $get_meter_id->fetchrow_array();
Run Code Online (Sandbox Code Playgroud)
上面的一个工作
where meter_serial = 21001652 AND ...")
Run Code Online (Sandbox Code Playgroud)
上面的一个工作.
where meter_serial = '".$variable."' AND ...")
Run Code Online (Sandbox Code Playgroud)
以上不起作用
where meter_serial = ".$variable." AND ...")
Run Code Online (Sandbox Code Playgroud)
以上不起作用
非常感谢.
是如何将2个字符串加密在一起的.
因为我实时添加位和位串(通过str = str + bitString;)并在最后.我生成字符串并加密它.
现在问题是我可以像文本编写者一样实时编写和编写bitString吗?类似的东西:CrytoStream cr = new(outFile,xxx,write)cr.write(bitString);
例子将是适当的.
在Perl中,为什么我从parsedate(2010-7-2 13:0:0)和解析(2010-7-2 13:00:0)得到不同的结果?