据我所知,RSA密钥通常是基于(强)随机生成器生成的.
相反,我想基于密码创建它们.
或者更确切地说是它的哈希值,例如sha512(sha512(密码+盐)+密码+辣椒)
这需要在JavaScript中完成客户端.
谁会知道怎么做?是否有一个简单的JavaScript库,可以根据给定的输入确定性地创建RSA密钥对?
(实际上,我提到了RSA,但任何安全的非对称加密就足够了,我只需要公私加密)
另外:我需要这个,因为我正在构建一些安全的通信解决方案,不需要依赖连接甚至服务器来保证安全.
我正在使用随机密钥使用AES加密所有内容,并且密钥是RSA加密的.这个想法是Alice可以使用Bob的公钥对其内容(或实际上是她的内容的AES密钥)进行RSA加密(因此Bob的公钥必须在线存储).
之后,当Bob再次输入密码时,他的浏览器可以在现场确定性地计算他的RSA私钥和公钥,从Alice下载内容,并使用他的私钥在本地解密.
我用纯HTML5和JavaScript编写了一些简单的在线游戏.没什么好看的,没有服务器端的东西,基本上每个游戏只是一个.html(包括javascript和css)和一些.png和.jpg图像.
现在,这种类型也适用于移动设备(android/iphone/ipad)只需浏览特定页面,但我想专用的应用程序可以在这些设备上更好/更方便.
我完全没有为iOS或Android开发的经验,所以也许这个问题太复杂了,无法立即完全回答,但是:
是否有可能为Android创建一个应用程序,类似于iOS(iphone/ipad),基于我的html页面,除了基本上为这些特定平台重写整个游戏?
如果是,我该如何解决这个问题?什么是最简单的方法?是否需要大量的Android/iOS知识,或者是否存在将我的html页面(+所需图像)包装到移动应用程序中的某种通用"转换"?
我正在使用html5画布+一些javascript(onmousedown/move/up)在网页上创建简单的绘图板.
在Opera,Firefox,Chrome等中运行正常(在台式机上试用).但是如果我用iPhone访问这个页面,当试图在画布上绘图时,它会拖动或滚动页面.
这适用于其他页面内容,通过向下滑动页面,您可以像往常一样在移动浏览器中浏览页面.但有没有办法在画布上禁用此行为,以便移动访问者可以实际上在其上绘制一些东西?
供您参考,这是一个简洁的例子:
<html><head><script type='text/javascript'>
function init()
{
var canvas = document.getElementById('MyCanvas');
var ctx = canvas.getContext('2d');
var x = null;
var y;
canvas.onmousedown = function(e)
{
x = e.pageX - canvas.offsetLeft;
y = e.pageY - canvas.offsetTop;
ctx.beginPath();
ctx.moveTo(x,y);
}
canvas.onmouseup = function(e)
{
x = null;
}
canvas.onmousemove = function(e)
{
if (x==null) return;
x = e.pageX - canvas.offsetLeft;
y = e.pageY - canvas.offsetLeft;
ctx.lineTo(x,y);
ctx.stroke();
}
}
</script></head><body onload='init()'>
<canvas id='MyCanvas' width='500' height='500' style='border:1px solid #777'>
</canvas></body></html>
Run Code Online (Sandbox Code Playgroud)
是否有一些特殊的样式或事件我必须添加到画布中,以避免在画布中滑动时拖动/滚动页面?
我刚刚安装了Git + TortoiseGit,在我的PC上创建了一个新的本地存储库,添加了一个文件,现在我正在尝试提交它(我猜这是提交 - >"主").
但它说:"必须在提交前设置用户名和电子邮件.你想现在设置这些吗?"
呃,这应该是一个本地存储库.什么电子邮件地址与此有什么关系?
或者我误解了Git的工作方式?请注意,我没有使用GitHub或BitBucket等等.只是一个本地存储库.
我正在研究某种在线多用户编辑器/ coop接口,它将在一个页面生命周期内做很多(如数千)ajax请求.
什么是最好的:(在稳定性,兼容性,避免麻烦方面'最好')
创建一个XMLHttpRequest对象,并为每个HTTP请求重用该对象
为每个HTTP请求创建一个新的XMLHttpRequest对象
管理XMLHttpRequest对象的动态"池",在启动HTTP请求时创建一个新池,并且没有现有对象可用,并在上一个请求成功完成时将先前创建的对象标记为"可用"
我认为1不是一个选项,因为某些请求可能会失败,我可能正在发起新请求而前一个请求尚未完成,等等.
对于2,我猜这是内存泄漏,或者可能导致内存/资源使用疯狂.或者我可以在请求完成时以某种方式关闭或删除对象?(在哪里/如何?)或者JS垃圾收集器是否正确地处理了这个问题?
从未尝试过3次,但感觉就像两个世界中最好的一样.或者是一种不必要的方法,还是我仍然缺少潜在的问题?确切地说,当我接收readyState 4和http状态200时,我何时能够完成请求(因此,对象可用于新请求)?(即我可以确定之后不再有更新或回调吗?)
我在.htaccess中使用RewriteRule将任何不是现有文件的内容重定向到"cms.php"文件,该文件动态处理任何请求(或者在适当时输出一些错误消息).
这是我在.htaccess中所做的事情:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /cms.php [L,QSA]
Run Code Online (Sandbox Code Playgroud)
奇迹般有效.
但是,出于开发目的,我还想在我的本地XAMPP系统上托管相同的站点.在我的实际网络服务器上,cms.php位于de document根文件夹中,因此我可以在那里使用/cms.php.但是在我的本地开发机器上,这个站点位于某个子目录中,即/cms.php不是正确的路径.
我也试过"cms.php"(没有/在它前面)以及"./cms.php"(希望"."表示当前目录)但无济于事.只有当我在RewriteRule中明确指定/the/correct/subdir/cms.php时,它才能正常工作,但显然这只在开发机器上有效,而不在我的实时网络服务器上.
我可以以某种方式使用智能路径或mod_rewrite变量或其他东西,以便.htaccess知道它需要重定向到我的cms.php文件在同一个目录中.htaccess本身所在的位置?
我在javascript中寻找一种无损压缩算法(例如LZW或Huffman或其他任何东西),该算法可以接收并返回原始的二进制数据。
“二进制数据”是指字节序列,它可以采用以下任何一种形式:
现在很明显,到处都有大量的javascript实现,可用于多种算法。但是我发现的所有东西似乎都在做疯狂的事情,例如:
返回的数组还包含大于255的值(那么现在的压缩率是多少?如何以字节为单位表示它,或者如何将其保存到文件中?)
弄乱字符串中的字符编码,从/转换为unicode或url / html实体或诸如此类(这是BINARY,此处不应用字符编码!)
返回其他似乎不适合二进制存储的表示形式(即无法转换为字节序列)
谁会知道适合我的二进制恋物癖的良好javascript压缩(+ decompression)实现?
我有一些2D多边形,每个都是一个顺时针坐标列表.多边形很 简单(即它们可能是凹的但它们本身不相交)并且它们彼此不重叠.
我需要将这些多边形细分为更小的多边形以适应大小约束.就像原始多边形一样,较小的多边形应该是简单的(非自相交),并且约束是它们应该在一个'单位平方'内(为简单起见,我可以假设为1x1).
问题是,我需要尽可能高效地完成这项工作,其中"高效"意味着可能产生的最小数量(小)多边形.计算时间并不重要.
对此有一些智能算法吗?起初我想过递归细分每个多边形(将它分成两半,水平或垂直,无论哪个方向更大)都可以工作,但我似乎没有得到非常优化的结果.有任何想法吗?
我想知道以下问题.我显然不希望有任何实际的解决方案,但我会感谢开发人员对此的看法:
理论上是否可以有一个程序打开其他程序(为了参数,让它说它打开.exe文件),并确定一个特定的可执行文件,当执行时(具有固定的输入和机器状态),播放国际象棋游戏(在其可能执行的任何其他任务中).
使用'下棋',我的意思是有一些棋盘和棋子的代表,应用后来的黑色和白色动作源于内置的国际象棋AI引擎.
这种理论上的"国际象棋检测程序"可以包含虚拟机或PC模拟器,或者在必要时实际模拟扫描的可执行文件的任何内容.我们可以假设它在任意快速的计算机上运行,并且具有ditto ram.
(编辑)关于暂停问题,我可以这样解决:
将程序加载到虚拟机中,该虚拟机具有N位(硬盘和存储空间以及CPU寄存器).该虚拟机可以假设最多2 ^ N个不同的状态.
逐步执行VM中的程序.每个步骤后,检查它是否停止.如果是:问题解决了(结果:是的,它停止了).如果否:获取虚拟机的当前状态,并查看此状态是否存在于我们之前已遇到的状态列表中.如果是:问题解决了(结果:不会永远运行).如果否:将此状态添加到列表中并继续.
由于可能出现最多2 ^ N个不同的状态,因此该算法将确定程序是否在有限时间内确定地停止.
(Edit2)扫描的可执行文件或其运行的(虚拟)机器的(有限)似乎有些含糊不清.假设要扫描的可执行文件最多可以是1 GB(这应该足够,因为大多数国际象棋程序都要小得多)并且它们应该在具有10 GB内存的PC(或VM)上运行.
我们的理论象棋检测程序可以使用任意数量的ram.
javascript ×4
algorithm ×3
mobile ×2
.htaccess ×1
ajax ×1
android ×1
apache ×1
binary ×1
chess ×1
compression ×1
cryptography ×1
detect ×1
drag ×1
draw ×1
email ×1
encoding ×1
executable ×1
git ×1
html5 ×1
html5-canvas ×1
instance ×1
ios ×1
mod-rewrite ×1
partitioning ×1
plane ×1
polygon ×1
redirect ×1
reusability ×1
rsa ×1
security ×1
tessellation ×1
theory ×1
tortoisegit ×1