关于这个主题有很多SO帖子,但大多数是针对Windows并使用GUI.所有其他帖子似乎都使用CLI.
在MacOS/Linux上是否有puttygen的GUI版本,如果是这样的说明如何安装/使用?CLI似乎给我一个错误.
Usage: puttygen ( keyfile | -t type [ -b bits ] )
[ -C comment ] [ -P ] [ -q ]
[ -o output-keyfile ] [ -O type | -l | -L | -p ]
>puttygen mykey.pem -t rsa -b 2048 -o mykey.ppk
puttygen: cannot both load and generate a key
Run Code Online (Sandbox Code Playgroud)
我的命令有问题吗?
我正在开发一个项目,我需要我的应用程序为 SSH 登录生成公共/私有 RSA 密钥。
到目前为止,我有以下代码来获取密钥:
private void createKeyTest()
{
try
{
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(2048);
KeyPair keyPair = kpg.genKeyPair();
byte[] pri = keyPair.getPrivate().getEncoded();
byte[] pub = keyPair.getPublic().getEncoded();
String privateKey = new String(pri);
String publicKey = new String(pub);
Log.d("SSHKeyManager", "Private Key: " + privateKey);
Log.d("SSHLeyManager", "Public Key: " + publicKey);
}
catch (NoSuchAlgorithmException ex)
{
Log.e("SSHKeyManager", ex.toString());
}
Run Code Online (Sandbox Code Playgroud)
当我在 Logcat 中打印出来时,当我期望密钥看起来像这样时,我会得到随机的非文本字符:
-----BEGIN RSA PRIVATE KEY-----
MIIEoQIBAAKCAQEAm8QDThbuEjAbQxbsdDltL2xdFkQOep3L0wseSJAxmDuvH6yB
9I2fEEmF+dcVoNo2DGCDZMw7EgdFsfQZNF+PzKdZwtvSUTDW/TmMHWux2wYimNU3
jhQ3kfxGmiLgMJHQHWLkESwd06rCr7s1yOnPObdPjTybt7Odbp9bu+E59U10Ri3W
JFxIhi9uYQvpRn4LT/VIfH/KBdglpbD9xBAneVbKFXW7....
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud) 我有app使用指纹和4位数针(可以由用户在应用程序设置中设置,这不是系统管脚/模式/密码)授权.
使用指纹一切都很好,我的针有问题.
我想要做的是:
然后在授权期间:
我的问题是:如何生成由用户输入的pin保护的KeyPair
PS对于指纹,此逻辑由以下方式处理:
KeyGenParameterSpec.Builder(KEY_NAME, KeyProperties.PURPOSE_SIGN).setUserAuthenticationRequired(true)
Run Code Online (Sandbox Code Playgroud) 我可以创建密钥myKey对AWSwith Terraform。
resource "tls_private_key" "pk" {
algorithm = "RSA"
rsa_bits = 4096
}
resource "aws_key_pair" "kp" {
key_name = "myKey" # Create a "myKey" to AWS!!
public_key = tls_private_key.pk.public_key_openssh
}
Run Code Online (Sandbox Code Playgroud)
亚马逊AWS:
但我无法下载该myKey.pem文件。是否可以像下面这样下载myKey.pem文件Terraform?
amazon-ec2 amazon-web-services key-pair terraform private-key
我有一个KeyValuePair项的集合,其中DateTime为键,字符串为value.基本上我的数据看起来像:
12/07/2013 - 10220
12/07/2013 - 10220
12/07/2013 - 12220
12/07/2013 - 11240
12/07/2013 - 15220
13/07/2013 - 23220
13/07/2013 - 35620
14/07/2013 - 15620
14/07/2013 - 15620
Run Code Online (Sandbox Code Playgroud)
我想列出我每天有多少项(不同).所以查询会导致:
12/07/2013 - 4
13/07/2013 - 2
14/07/2013 - 1
Run Code Online (Sandbox Code Playgroud) 我使用带有私钥的JSch到FTP文件
第3行有问题.如果没有这一行,JSch就无法运行.
我的问题是:第3行是否会使SFTP转移不安全?
在Java中,我想根据我的应用程序中的字符串生成公钥和私钥。
我不是为了安全,而是为了“我可以使用这个字符串生成相同的公钥和私钥吗”。
我该怎么做呢?
我正在研究这些方法:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.initialize(1024, random);
Run Code Online (Sandbox Code Playgroud)
但我想用我自己的字符串作为密钥对生成器的种子,理想情况下该字符串将通过这些算法进行哈希处理。KeyGen 仅获取SecureRandom对象。每当我传递该字符串时,我都想要相同的结果密钥对。
我正在尝试使用 openssl 库生成 RSA 密钥对,然后稍后读取相同的密钥。但是,它失败了。有时它会给我这个错误:
错误:0906D06C:PEM 例程:PEM_read_bio:没有起始行
有时,它会给我这个错误:
错误:0906D06C:lib(9):func(109):reason(108)
生成密钥对并稍后能够读取它的正确方法是什么?这是我的代码。如果您运行它,您会发现它正确生成了 RSA 密钥对,但稍后无法读取它们。
#include <stdio.h>
#include <iostream>
#include <openssl/rsa.h>
#include <openssl/pem.h>
#include <openssl/err.h>
#include <exception>
bool generate_key() {
size_t pri_len; // Length of private key
size_t pub_len; // Length of public key
char *pri_key; // Private key in PEM
char *pub_key; // Public key in PEM
int ret = 0;
RSA *r = NULL;
BIGNUM *bne = NULL;
BIO *bp_public = NULL, *bp_private = NULL;
int bits = 2048;
unsigned long …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的 Github Enterprise 存储库使用部署密钥,以便我可以使用 CodeBuild 项目推送新部署的标签。无论我如何尝试,我都无法让它发挥作用。
我使用如下命令生成密钥:ssh-keygen -t ecdsa -b 521 -f $PATH_TO_SSH_KEY -q -N ""
我将$PATH_TO_SSH_KEYAWS SSM Parameter Store 中的内容作为 SecureString 保存。
我从参数存储中加载此参数到我的 CodeBuild 环境中,而不是加载到我的 buildspec.yml 中。
我将 $PATH_TO_SSH_KEY.pub作为新的部署密钥保存到 github 企业存储库。
我将密钥保存到文件中:printf -- "$GITHUB_PRIVATE_KEY" > ~/.ssh/id_ecdsa
现在,我尝试了两种不同的方法,但都失败了。
将企业站点的指纹保存到known_hosts:ssh-keyscan "$GITHUB_ENTERPRISE_URL" >> ~/.ssh/known_hosts
配置git以使用我的凭据:GIT_SSH_COMMAND="ssh -i ~/.ssh/id_ecdsa" git push --tags
此方法失败并出现错误:
git@<ENTERPRISE_URL>: Permission denied (publickey).
fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)
使用 SSH 代理保存密钥并尝试以这种方式克隆:
eval $(ssh-agent) …
从昨天起,我收到了运行 Android 12 的三星设备上的大量崩溃报告。AndroidKeyStoreProvider 在调用 X509Certificate.getPublicKey() 时抛出 NPE。它在其他品牌的设备上运行良好。
密钥对生成方法:
public void generateKeys(Context context) throws GeneratePairKeyException {
KeyPairGenerator keyPairGenerator;
try {
if(KeyStoreUtil.getPrivateKey() == null){
Calendar start = GregorianCalendar.getInstance();
Calendar end = GregorianCalendar.getInstance();
end.add(Calendar.YEAR, 10);
keyPairGenerator = KeyPairGenerator.getInstance("RSA", ANDROID_KEY_STORE);
keyPairGenerator.initialize(new KeyPairGeneratorSpec.Builder(context)
.setAlias(ALIAS)
.setSerialNumber(BigInteger.valueOf(1))
.setStartDate(start.getTime())
.setEndDate(end.getTime())
.setSubject(new X500Principal("CN=Pushe_CA"))
.build());
keyPairGenerator.generateKeyPair();
}
} catch (NoSuchAlgorithmException |
NoSuchProviderException | InvalidAlgorithmParameterException e) {
Logger.e(e);
throw new GeneratePairKeyException("pair key not created");
} catch (IllegalStateException e) {
throw e;
} catch (Exception e) {
throw new GeneratePairKeyException("pair key …Run Code Online (Sandbox Code Playgroud) key-pair ×10
android ×3
java ×2
private-key ×2
ssh ×2
amazon-ec2 ×1
c# ×1
c++ ×1
cryptographic-hash-function ×1
cryptography ×1
distinct ×1
encryption ×1
git ×1
jsch ×1
keystore ×1
linq ×1
linux ×1
openssl ×1
pem ×1
public-key ×1
putty ×1
rsa ×1
sftp ×1
sha ×1
terraform ×1