我在加密中使用的各种密钥之间感到困惑.
亚马逊给了我 key.pem
在linux中我生成像id_rsa和的键 id_rsa.pub
现在putty使用了键 key.ppk
我真的很困惑在哪里使用什么类型的密钥
encryption ssh putty public-key-encryption amazon-web-services
Diffie-Hellman(DH)是否提供完美的前向保密?或者它只是Ephemeral Diffie-Hellman(DHE)的特色?Elliptic Curve短暂的diffie-Hellman(ECDHE)是否优于DHE?
我需要使用公钥(pem文件)加密字符串,然后使用私钥(也是pem)对其进行签名.
我正在加载pem文件:
publicCert = fs.readFileSync(publicCertFile).toString();
Run Code Online (Sandbox Code Playgroud)
但经过几个小时的谷歌搜索后,我似乎找不到使用公钥加密数据的方法.在php中我只是调用openssl_public_encrypt,但我没有在节点或任何模块中看到任何相应的函数.
如果有人有任何建议,请告诉我.
在我已经阅读过关于公钥加密的解释中,据说通过将2个极大的素数相乘来得出一些大数.由于对大质量产品进行分解几乎不可能耗费时间,因此您具有安全性.
这似乎是一个可以通过彩虹表轻易解决的问题.如果您知道所使用的素数的大致大小并且知道其中有2个,您可以快速构建彩虹表.它是一个强大的表,但它可以完成,任务可以跨硬件并行化.
为什么彩虹表不是基于乘以大素数而击败公钥加密的有效方法?
免责声明:显然,数以万计的疯狂智能安全意识的人不会错过几十年我在下午想到的事情.我认为我误解了这一点,因为我正在阅读简化的外行解释(例如:如果使用超过2个数字),但我还不知道我的知识差距在哪里.
编辑:我知道"彩虹表"涉及在查找表中使用预先计算的哈希,但上面的声音听起来像彩虹表攻击所以我在这里使用这个术语.
编辑2:如答案中所述,没有办法存储所有素数,更不用说它们的所有产品.
即使1 exabyte重1克,我们也无法达到2.17×10 124所需的能够将所有这些数字装入带有太阳质量的硬盘中
cryptography rainbowtable public-key-encryption prime-factoring
我记得有一个命令将公钥发送到我想要的远程主机.我想使用该功能将我的一个公钥发送到另一个主机.我怎样才能做到这一点?
我正在用Python创建一个程序,通过安装程序分发给Windows用户.
该程序需要能够每天下载一个使用用户公钥加密的文件,然后对其进行解密.
所以我需要找到一个Python库,让我生成公共和私有PGP密钥,并解密用公钥加密的文件.
这是pyCrypto会做的事情(文档是模糊的)?还有其他纯Python库吗?如何使用任何语言的独立命令行工具?
到目前为止我所看到的只是GNUPG,但是在Windows上安装它会对注册表产生影响,并且无处不在地抛出dll,然后我不得不担心用户是否已经安装了这个,如何备份他们现有的密钥环等等.我宁愿只需要一个python库或命令行工具,并自己管理密钥.
更新:pyME可能会工作,但它似乎与我必须使用的Python 2.4不兼容.
我们是否可以将多个公钥与一个私钥相关联以进行RSA公钥加密?
我有一个gpg .key文件,用作解密.dat.pgp文件的密码.使用以下命令在一台服务器上使用相同的.key文件成功解密加密的.data.pgp文件
cat xxx_gpg.key | /usr/bin/gpg --batch --quiet -o xxx.dat --passphrase-fd O -d xxx.dat.pgp
Run Code Online (Sandbox Code Playgroud)
但是,当我将相同的密钥移动到另一个服务器xxx_gpg.key并运行相同的上述命令时,我得到以下错误 -
gpg: decryption failed: No secret key
Run Code Online (Sandbox Code Playgroud)
编辑:
我发现它gpg --list-secret-keys返回服务器上的一些数据,但是没有为其他服务器返回结果.
我们如何配置密钥
我在使用公钥认证设置OpenSSH for Windows时遇到问题.
我在本地桌面上工作,可以使用Unix机器或其他OpenSSH for Windows机器上的密钥进行ssh.
我已将构建复制到服务器上,我可以使密码验证工作正常,但是当我使用密钥时,我得到以下问题:
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug3: start over, passed a different list publickey,password,keyboard-interactive
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /cygdrive/c/sshusers/jsadmint2232/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Connection closed by 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
因此,出于测试目的,我一直尝试SSH到localhost,但即使远程尝试,我也会遇到同样的问题.
更奇怪的是,当我启用了密码和公钥时sshd_config,它只会尝试使用密钥,然后使用上述消息轰炸,甚至不会尝试使用密码.
以下是我采取的步骤:
我使用RSA加密Android上的用户名和密码,并在服务器上解密它们(tomcat 6,java 1.6).Android加密:
PublicKey pubKey = readPublicKeyFromFile(mod, ex);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
byte[] cipherData = cipher.doFinal(data);
return cipherData;
Run Code Online (Sandbox Code Playgroud)
Java Tomcat解密:
PrivateKey pubKey = readPrivateKeyFromFile(mod, ex);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, pubKey);
byte[] cipherData = cipher.doFinal(data);
return cipherData;
Run Code Online (Sandbox Code Playgroud)
如果我使用android部分OUTSIDE android(只是在主方法)它工作正常.但不在我的android(模拟器)里面.在服务器端,我收到以下错误:
javax.crypto.BadPaddingException: Blocktype mismatch: 0
at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:311)
at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:255)
at com.sun.crypto.provider.RSACipher.a(DashoA13*..)
at com.sun.crypto.provider.RSACipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
Run Code Online (Sandbox Code Playgroud)
我将mod和ex保留为BigIntegers常量,因此我不将它们写入文件中.我知道java1.6和java 1.5加密之间存在差异,因此两者都是用java 1.6编译的.
一些调试信息:
在android中调试期间,我可以看到pubKey包含十六进制的模数和指数.如果我在main方法中调试(同样的代码),我可以看到pubKey包含十进制的模数和指数.
我究竟做错了什么?
谢谢
encryption ×4
ssh ×3
cryptography ×2
gnupg ×2
rsa ×2
android ×1
java ×1
node.js ×1
openssh ×1
pgp ×1
public-key ×1
putty ×1
python ×1
rainbowtable ×1
ssl ×1
unix ×1
windows ×1