我正在研究一些加密的东西.
我知道以下事情(来源=维基百科):
初始化矢量应该是:
我的问题是,如何使用OPENSSL和PHP安全地生成IV?我知道lib mcrypt中存在这样的功能(http://fr2.php.net/manual/fr/function.mcrypt-create-iv.php)
我没有找到任何与OPENSSL这样做的东西(产生独特且不可预测的IV).
我实际上正在开发一个安全脚本,似乎我遇到了PHP的问题以及PHP使用内存的方式.
my.php:
<?php
// Display current PID
echo 'pid= ', posix_getpid(), PHP_EOL;
// The user type a very secret key
echo 'Fill secret: ';
$my_secret_key = trim(fgets(STDIN));
// 'Destroty' the secret key
unset($my_secret_key);
// Wait for something
echo 'waiting...';
sleep(60);
Run Code Online (Sandbox Code Playgroud)
现在我运行脚本:
php my.php
pid= 1402
Fill secret: AZERTY <= User input
waiting...
Run Code Online (Sandbox Code Playgroud)
在脚本结束之前(睡觉时),我生成一个向脚本发送SIGSEV信号的核心文件
kill -11 1402
Run Code Online (Sandbox Code Playgroud)
我检查核心文件:
strings core | less
Run Code Online (Sandbox Code Playgroud)
以下是结果的摘录:
...
fjssdd
sleep
STDIN
AZERTY <==== this is the secret key
zergdf
...
Run Code Online (Sandbox Code Playgroud)
我知道内存只是在未设置且未被"销毁"的情况下发布.数据并没有真正删除(调用free()函数)
因此,如果有人转储进程的内存,即使在脚本执行之后,他也可以读取$ my_secret_key(直到内存空间被另一个进程覆盖)
有没有办法在PHP脚本执行后覆盖整个内存空间的这个内存段?
感谢大家的评论. …
我想在MySQL数据仓库中处理日期维度.(我是DW世界的新手)
我在google上进行了一些搜索,看到了很多表结构(大部分)日期维度,其中主键很简单UNSIGNED INTEGER.
为什么不使用DATE字段作为主键,因为使用MySQL它是3字节VS 4字节INTEGER?
例如:
CREATE TABLE dimDate
id INTEGER UNSIGNED NOT NULL PRIMARY AUTOI_NCREMENT,
date DATE NOT NULL,
dayOfWeek
...
Run Code Online (Sandbox Code Playgroud)
VS
CREATE TABLE dimDate
date DATE NOT NULL PRIMARY,
dayOfWeek
...
Run Code Online (Sandbox Code Playgroud) 我有这个 yaml
param1:
key1: value1
key2: value2
param2:
key1: value1
key2: value2
param3:
key1: value1
key2: value2
Run Code Online (Sandbox Code Playgroud)
我怎样才能用液体得到所有的钥匙?
预期的结果是
param1,param2,param3
Run Code Online (Sandbox Code Playgroud)
任何的想法?
phing是否可以根据命令行实现一些任务?
例如:
phing install tag = 1.0 dest =/tmp/1.0
我实际上只看到3种方法
从命令行调用phing目标时,其他命令行参数是否无用?
我不能简单地使用 ruby erb 模板系统循环数组......
这是我的模板:
<% ['foo', 'bar'].each do |val| -%>
<%= val %>
<% end -%>
Run Code Online (Sandbox Code Playgroud)
这是命令行和结果
erb test.erb
/usr/share/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/erb.rb:896:in `eval': test.erb:1: syntax error, unexpected ';' (SyntaxError)
'foo', 'bar'].each do |val| -; _erbout.concat "\n"
^
test.erb:3: syntax error, unexpected ';'
; end -; _erbout.concat "\n"
^
from /usr/share/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/erb.rb:896:in `result'
from /usr/share/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/erb.rb:878:in `run'
from /usr/share/rvm/rubies/ruby-2.4.1/bin/erb:149:in `run'
from /usr/share/rvm/rubies/ruby-2.4.1/bin/erb:170:in `<main>'
Run Code Online (Sandbox Code Playgroud)
这个非常简单的例子有什么问题吗?
免责声明:我是 ruby 和 erb 菜鸟 ^^