我正在尝试使用公钥身份验证实现登录系统登录网站.我不确定这是否可行.
这是我打算做的: -
我见过像startssl.com这样的网站要求用户的私钥来验证他们的身份(参见附件截图).那么实现这样一个系统需要什么呢?

为了从/发送和接收加密邮件的iPhone我需要阅读公钥(服务器的公钥)PEM文件,并创建一个SecKeyRef(后来我甚至可以将其存储在钥匙串,以免再次创建它).
这是我目前的工作流程:
我遇到3问题,因为我无法从PEM文件数据创建SecKeyRef.我找不到任何关于如何做的文档,有没有人有同样的问题?任何提示?由于我找不到任何代码示例或文档,我觉得我做错了...
谢谢!
我记得很久以前用OpenSSL这么做,但我想知道它是否可能以及如何,我从来没有在java上使用过Cryptography.
我正在运行一个java程序,我使用Java SFTP将文件从一个文件夹传输到另一个文件夹.我遇到的问题是我在Java SFTP中遇到以下错误(使用JSch):
C:\ Oracle\Middleware\Oracle_Home\oracle_common\jdk\bin\javaw.exe -server -classpath C:\ JDeveloper\mywork\Java_Hello_World.adf; C:\ JDeveloper\mywork\Java_Hello_World\Client\classes; C:\ Users\ADMIN\Downloads\jsch-0.1.53.jar -Djavax.net.ssl.trustStore = C:\ Users\IBM_AD~1\AppData\Local\Temp\trustStore5840796204189742395.jks FileTransfer com.jcraft.jsch.JSchException:UnknownHostKey: 127.0.0.1.RSA密钥指纹是a2:39:3f:44:88:e9:1f:d7:d1:71:f4:85:98:fb:90:dc at com.jcraft.jsch.Session.checkHost(Session.java: 797)at com.jcraft.jsch.Session.connect(Session.java:342)at com.jcraft.jsch.Session.connect(Session.java:183)at FileTransfer.main(FileTransfer.java:33)进程退出时退出代码0.
以下是我目前的代码:
FileTransfer fileTransfer = new FileTransfer();
JSch jsch = new JSch();
try {
String host = "127.0.0.1";
int port = 22;
String user = "user";
Session session = jsch.getSession(user, host, port);
session = jsch.getSession("username", "127.0.0.1", 22);
session.connect(); // bug here , java.net.ConnectException
ChannelSftp sftp = null;
sftp = (ChannelSftp)session.openChannel("sftp") ; //channel;
//extra config code …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 Vault 检索公钥。它被秘密存储。
我正在尝试将检索到的字符串转换为公钥以验证签名。
示例公钥字符串如下所示
-----开始公钥----- MIIBITANBgkqhkiG9w0BAQEFAAOCAQ4AMIIBCQKCAQBWeqVZ8Ub/o4VQ8nnm888B /Ydqv2IN5bObxupZ7njMKuT/WPgwlK8+Wc0Xjhy82E51XW6E4/0um8sIQ1cxvoSO QsrfkRagD+ O9OrjQbb2TqrilDDhFx9EGjXuZpR3brDUufCG6SkypqiKSaMuoVoax c82TZ1uAIp5OSroWt1IdUkvam24X/7zDIf1l8XWCmbfCDrBb73hBYA4MgTjsSckC 5nz+GLcWTfz0wze4lwHCi1KYFv+1+WcYHWPLbqL tc8nzVqkuP5Ne/9HAFkaEAIw5 fKLccksaT/TLyIcrALcfuABlgX1yeBulVcbTAp+WiYRvo9+FKK23pbwkh+uy0tq1 AgMBAAE= -----结束公钥-----
我在我的秘密值中添加了相同的内容,并且没有格式。
但是,使用下面的代码,我在行中遇到错误 InvalidKeyException: INVALID KEY FORMAT
PublicKey publicKey = fact.generatePublic(pubKeySpec);
Run Code Online (Sandbox Code Playgroud)
这是代码:
String publicKeyAsString = secretClient.getSecret("key-name").getValue();
byte[] keyContentAsBytes = publicKeyAsString.getBytes();
KeyFactory fact = KeyFactory.getInstance("RSA");
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(keyContentAsBytes);
PublicKey publicKey = fact.generatePublic(pubKeySpec);
Run Code Online (Sandbox Code Playgroud)
用堆栈跟踪编辑:
Caused by: java.security.InvalidKeyException: invalid key format
at sun.security.x509.X509Key.decode(X509Key.java:386) ~[?:?]
at sun.security.x509.X509Key.decode(X509Key.java:401) ~[?:?]
at sun.security.rsa.RSAPublicKeyImpl.<init>(RSAPublicKeyImpl.java:122) ~[?:?]
at sun.security.rsa.RSAKeyFactory.generatePublic(RSAKeyFactory.java:330) ~[?:?]
at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:235) ~[?:?]
Run Code Online (Sandbox Code Playgroud)
编辑:用于测试的公钥:
-----开始公钥----- MIIBITANBgkqhkiG9w0BAQEFAAOCAQ4AMIIBCQKCAQBWeqVZ8Ub/o4VQ8nnm888B /Ydqv2IN5bObxupZ7njMKuT/WPgwlK8+Wc0Xjhy82E51XW6E4/0um8sIQ1cxvoSO QsrfkRagD+ O9OrjQbb2TqrilDDhFx9EGjXuZpR3brDUufCG6SkypqiKSaMuoVoax c82TZ1uAIp5OSroWt1IdUkvam24X/7zDIf1l8XWCmbfCDrBb73hBYA4MgTjsSckC 5nz+GLcWTfz0wze4lwHCi1KYFv+1+WcYHWPLbqL tc8nzVqkuP5Ne/9HAFkaEAIw5 fKLccksaT/TLyIcrALcfuABlgX1yeBulVcbTAp+WiYRvo9+FKK23pbwkh+uy0tq1 …
我在单独的.pem文件中有公钥和私钥,我需要以某种方式进入JKS密钥库.
为此尝试在KeyTool中使用-import命令,这会产生"非X.509证书"错误.
我猜这个解决方案与OpenSSL有关,但我不完全确定如何处理它.
真的很感激任何帮助,因为我对所有与加密有关的东西都完全无能为力.
在此先感谢, - 罗尔夫
我正在尝试使用C#读取.pem仅包含RSA公钥的文件.我无权访问私钥信息,我的应用程序也不需要它.文件myprivatekey.pem文件以.开头
-----BEGIN PUBLIC KEY-----
最后以
-----END PUBLIC KEY-----.
我目前的代码如下:
Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair keyPair;
using (var reader = File.OpenText(@"c:\keys\myprivatekey.pem"))
keyPair = (Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair)new Org.BouncyCastle.OpenSsl.PemReader(reader).ReadObject();
Run Code Online (Sandbox Code Playgroud)
但是代码会抛出一条InvalidCastException消息
无法将"Org.BouncyCastle.Crypto.Parameters.DsaPublicKeyParameters"类型的对象强制转换为"Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair".
PemReader当没有私钥信息时,如何使用Bouncy Castle 只读公钥?
我想使用Java语言创建X509证书,然后从中提取公钥.
我搜索了互联网,发现了很多代码示例,但是所有代码都有错误(未知变量或未知类型)或者有许多警告,例如:"方法......来自类型......已被弃用"等.
例如,为什么以下代码不起作用:
PublicKey pk;
CertificateFactory cf = CertificateFactory.getInstance("X.509");
String PKstr = pk.toString();
InputStream PKstream = new ByteArrayInputStream(PKstr.getBytes());
X509Certificate pkcert = (X509Certificate)cf.generateCertificate(PKstream);
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何使用纯Java或Bouncy Castle创建证书,然后从中获取公钥?
谢谢大家.
我正在玩并尝试编写RSA的实现.问题在于我不得不生成生成密钥对所涉及的大量素数.有人能指出我快速生成巨大的素数/可能的素数吗?
从亚马逊ec2服务器克隆git存储库我有一个奇怪的问题.它在我的一台运行ubuntu 12.04的计算机上运行没有任何问题,而在另一台使用12.10的计算机上它给我一个错误:
ssh: Could not resolve hostname ec2server: Name or service not known
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
这就像它没有识别我的配置文件.我使用以下git命令克隆:
sudo git clone ec2server:/var/www/project.git
Run Code Online (Sandbox Code Playgroud)
要么
sudo git clone ec2xxx.compute-1.amazonaws.com:/var/www/project.git
Run Code Online (Sandbox Code Playgroud)
这两个配置文件在两台计算机上相同,位于〜./ ssh中,内容如下:
Host ec2server
Hostname ec2XXX.compute-1.amazonaws.com
User ubuntu
IdentityFile ~/.ssh/mykey.pem
Run Code Online (Sandbox Code Playgroud)
如果我用实际地址替换ec2server,我会收到以下错误:
Cloning into 'project'...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
提前致谢.
public-key ×10
java ×4
certificate ×2
encryption ×2
private-key ×2
rsa ×2
amazon-ec2 ×1
bouncycastle ×1
c# ×1
config ×1
cryptography ×1
git ×1
iphone ×1
jsch ×1
keystore ×1
pem ×1
primes ×1
sftp ×1
ssh ×1
web ×1