ssh-add -l 显示我有3个RSA密钥添加到我的SSH代理.
ssh-add -L 显示那些公钥.
如何获取私钥,以便将其保存到文件中?或者这是不可能的?它是如何工作的呢?
是否可以要求ssh-agent使用私钥进行操作?我怎么能让它为我加密/解密一个号码?
我必须为此编写代码(编程语言并不重要),但我更喜欢使用现有工具或库.
我有一个Java线程:
class MyThread extends Thread {
@Override
public void run() {
BufferedReader stdin =
new BufferedReader(new InputStreamReader(System.in));
String msg;
try {
while ((msg = stdin.readLine()) != null) {
System.out.println("Got: " + msg);
}
System.out.println("Aborted.");
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
在另一个线程中,如何stdin.readline()在此线程中中止调用,以便打印此线程Aborted.?我试过了System.in.close(),但这没有任何区别,stdin.readline()仍然是阻塞.
我对没有的解决方案感兴趣
System.in).我正在编写一个接受传入TCP连接的服务器.假设服务器已接受TCP连接,并且已从客户端接收到16个(左右)字节.知道那16个字节服务器如何检测客户端是否想要发起SSL握手?
我做了一个实验,它表明在我的Linux系统上通过SSL连接到localhost(127.0.0.1或AF_UNIX)会使客户端发送以下握手(hexdump),然后是16个看似随机的字节:
8064010301004b0000001000003900003800003500001600001300000a07
00c000003300003200002f03008000000500000401008000001500001200
0009060040000014000011000008000006040080000003020080
Run Code Online (Sandbox Code Playgroud)
服务器应如何探测前几个字节,以便能够确定客户端是否正在发送SSL握手?对于所有有效的SSL握手,探测器必须返回true,并且对于非SSL握手的客户端发送的消息,它必须返回false,概率很高.不允许使用任何库(如OpenSSL)进行探测.探针必须是一个简单的代码(如C或Python中的几十行).
我想为我的演示文稿创建幻灯片.我的演示文稿将包含以下内容:幻灯片标题,项目符号点,代码片段(以等宽字体显示),一些代码行以粗体显示,Python代码片段(带语法高亮显示).
我需要一个可以用HTML(或HTML5)生成这样的幻灯片的应用程序或工具,因此当我在Web浏览器中打开生成的HTML,并将Web浏览器置于全屏模式时,它将启动幻灯片放映.我更喜欢将我的演示文稿编写为.txt带有一些标记的文件,然后该工具应该生成HTML.
我知道Google Docs的演示功能,但不支持Python语法高亮显示.
我也知道LaTeX和Beamer,但这会生成PDF而不是HTML(不是大问题),并且没有内置的Python语法高亮.
我更喜欢使用香草谷歌Chrome或Mozilla Firefox投影我的演示文稿.我不想在投影机上安装任何演示软件(例如bruce).
还有其他选择吗?
我的问题是(g^x) mod p在JavaScript中快速计算,其中^是取幂,mod是模运算.所有输入都是非负整数,x大约有256位,p是2048位的素数,g最多可能有2048位.
我发现可以在JavaScript中执行此操作的大多数软件似乎都使用JavaScript BigInt库(http://www.leemon.com/crypto/BigInt.html).在我的慢速浏览器(使用SpiderMonkey的Firefox 3.0)上使用此库执行此类大小的单次取幂大约需要9秒.我正在寻找一种至少快10倍的解决方案.使用square-and-multiply(通过平方取幂,http://en.wikipedia.org/wiki/Exponentiation_by_squaring)的明显想法对于2048位数来说太慢了:它需要多达4096次乘法.
升级浏览器不是一种选择.使用其他编程语言不是一种选择.将数字发送到Web服务不是一种选择.
是否有更快的替代方案实施?
更新:按照下面的答案中提到的文章http://www.ccrwest.org/gordon/fast.pdf的建议做一些额外的准备工作(即预先计算几百个权力),可以做到2048-位模幂运算仅使用最多354次模乘.(传统的square-and-multiply方法要慢得多:它使用最多4096次模乘.)这样做可以在Firefox 3.0中将模幂运算速度提高6倍,在Google Chrome中提高4倍.我们没有获得4096/354的全速加速的原因是BigInt的模块化指数算法已经比正方形和乘法更快,因为它使用蒙哥马利减少(http://en.wikipedia.org/wiki/Montgomery_reduction) .
更新:从BigInt的代码开始,似乎值得做两个级别的手动优化(和内联)Karatsuba乘法(http://en.wikipedia.org/wiki/Karatsuba_algorithm),然后才恢复到基础-32768 O( n ^ 2)在BigInt中实现的乘法.对于2048位整数,这会使乘法乘以2.25倍.不幸的是,模运算不会变得更快.
更新:使用http://www.lirmm.fr/arith18/papers/hasenplaugh-FastModularReduction.pdf和Karatsuba乘法和预计算功能中定义的修改后的Barrett约简(在http://www.ccrwest.org/gordon/中定义)fast.pdf),我可以在Firefox 3.0中将单次乘法所需的时间从73秒减少到12.3秒.这似乎是我能做的最好的,但它仍然太慢了.
更新:Flash Player中的ActionScript 2(AS2)解释器不值得使用,因为它似乎比Firefox 3.0中的JavaScript解释器慢:对于Flash Player 9,它似乎慢了4.2倍,对于Flash Player 10,似乎慢了2.35倍.有人知道ActionScript2和ActionScript3(AS3)之间的速度差异是否有数字运行?
更新:Flash Player 9中的ActionScript 3(AS3)解释器不值得使用,因为它与JavaScript int Firefox 3.0的速度几乎相同.
更新:在Flash Player 10的ActionScript 3(AS3)解释可高达6.5倍,比在Firefox 3.0的JavaScript解释器速度更快,如果int是用来代替Number,并Vector.<int>用来代替Array.对于2048位大整数乘法,至少它快2.41倍.因此,在AS3中进行模幂运算可能是值得的,如果可用的话,在Flash Player 10中执行它.请注意,这仍然比谷歌Chrome的JavaScript解释器V8慢.有关各种编程语言和JavaScript实现的速度比较,请参见http://ptspts.blogspot.com/2009/10/javascript-and-actionscript-performance.html.
更新:有一个非常快速的Java解决方案,如果安装了Java插件,可以从浏览器的JavaScript调用.以下解决方案比使用BigInt的纯JavaScript实现快约310倍. …
javascript primes discrete-mathematics modulo exponentiation
我正在建立一个使用Phusion Passenger运行多个Ruby on Rails Web应用程序的Apache2 Web服务器.我知道Passenger会生成处理请求的Ruby进程.我有以下问题:
我想使用GDB调试在Linux 2.6上运行的进程.attach PID(其中,PID是进程ID), ,,print main 和工作(即,他们发现各个符号).但是不起作用,从文件使用的进程加载的函数在哪里.这是我得到的:print sinprint gzopenprint dlopenprint myfoomyfoo.sodlopen
(gdb) print main
$3 = {int (int, char **)} 0x805ba90 <main>
(gdb) print sin
$4 = {<text variable, no debug info>} 0xb7701230 <sin>
(gdb) print gzopen
$5 = {<text variable, no debug info>} 0xb720df50 <gzopen>
(gdb) print dlopen
$6 = {<text variable, no debug info>} 0xb77248e0 <__dlopen_nocheck>
(gdb) print myfoo
No symbol "myfoo" in current context.
Run Code Online (Sandbox Code Playgroud)
如何找到GDB myfoo?
该功能 …
我正在使用node.js 0.6.18,以下代码使node.js关闭每两个请求之间的TCP连接(strace在Linux上验证).如何让node.js为多个HTTP请求重用相同的TCP连接(即保持活动状态)?请注意,网络服务器能够保持活力,它可以与其他客户端一起使用.Web服务器返回分块的HTTP响应.
var http = require('http');
var cookie = 'FOO=bar';
function work() {
var options = {
host: '127.0.0.1',
port: 3333,
path: '/',
method: 'GET',
headers: {Cookie: cookie},
};
process.stderr.write('.')
var req = http.request(options, function(res) {
if (res.statusCode != 200) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
process.exit(1)
}
res.setEncoding('utf8');
res.on('data', function (chunk) {});
res.on('end', function () { work(); });
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
process.exit(1);
});
req.end();
}
work()
Run Code Online (Sandbox Code Playgroud) 旧的和取代的WebSocket规范草案75没有指定HTTP请求标头Sec-WebSocket-Key1和Sec-WebSocket-Key2.为什么最新草案包含这些内容,以及增强安全性方面的内容?
我需要一个shell命令行,它将树哈希对应于特定的提交哈希.我知道git cat-file commit $COMMITID | grep ^tree可以做到,但我必须过滤掉它的输出.有没有只打印哈希的命令?