- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个 rsa.PublicKey
,它由结构中的模数和公共(public)指数组成。我想验证用该 key 签名的 ssh.Signature
,我想如果我有 ssh.PublicKey
我可以调用 Verify
该接口(interface)上的方法。但是,我找不到任何实现 ssh.PublicKey
并支持从 rsa.PublicKey
转换的类。我是否需要编写专有方法来执行此操作,或者是否有一些我没有找到的类,或者是否有更好的方法来解决我的问题?
对于上下文,我从 x509.Certificate
中获得了 rsa.PublicKey
,它来自 yubikey,证明其 PIV 插槽之一中的 key 。
最佳答案
NewPublicKey
来自 crypto/ssh 包的函数 http://godoc.org/golang.org/x/crypto/ssh#NewPublicKey可以拿*rsa.PublicKey
作为参数并返回 PublicKey
的一个实例包含 Verify
的界面方法 ( Verify(data []byte, sig *Signature) error
) - http://godoc.org/golang.org/x/crypto/ssh#PublicKey .
下面的程序说明了这一点——我们创建一个新的 *rsa.PrivateKey 并用它签署一条消息,然后转换 *rsa.PublicKey
至 ssh.PublicKey
使用 NewPublicKey
函数并验证签名;如果原始数据被修改,还要检查签名验证是否失败。为简洁起见,省略了错误检查。
package mainimport ( "crypto/rand" "crypto/rsa" "fmt" "log" "golang.org/x/crypto/ssh")func main() { data := []byte("Hello, world!") // create a new key as *rsa.PrivateKey priv, _ := rsa.GenerateKey(rand.Reader, 512) signer, _ := ssh.NewSignerFromKey(priv) sig, _ := signer.Sign(rand.Reader, data) // extract the ssh.PublicKey from *rsa.PublicKey to verify the signature pub, _ := ssh.NewPublicKey(&priv.PublicKey) if err := pub.Verify(data, sig); err != nil { log.Fatalf("publicKey.Verify failed: %v", err) } fmt.Printf("Signature OK\n") // modify the data and make sure we get a failure data[0]++ if err := pub.Verify(data, sig); err == nil { log.Printf("publicKey.Verify passed on bad data/signature, expect failure") }}
输出:
Signature OK
关于go - 将 rsa.PublicKey 转换为 ssh.PublicKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38579982/
我只有一个PublicKey字符串,如何获取PublicKey指纹?我有一些想法形式 https://go-review.googlesource.com/c/crypto/+/32814 , 但我不
在使用 secp256k1 曲线执行椭圆曲线加密时,我注意到虽然代码和测试用例在 Android Studio IDE 上编译,但它们不会在 android 设备上编译,因为曲线未在移动设备使用的 j
我有一个 rsa.PublicKey,它由结构中的模数和公共(public)指数组成。我想验证用该 key 签名的 ssh.Signature,我想如果我有 ssh.PublicKey 我可以调用 V
我正在尝试将 PublicKey 转换为 String,但我不知道如何正确地进行。以下代码没有给我正确的 key ,那么如何转换呢? byte[] publicKeyBytes = userKeys.
我注意到核心 .NET 程序集具有 PublicKey = 00000000000000000400000000000000。不仅比 sn.exe 允许生成的那些更短(最少 384 位),而且它还有很
我已经使用命令 ssh keygen 创建了 ssh key 并且我已将公钥添加到我的 bitbucket 帐户,然后我也将 key 添加到了 ssh 代理,但是当我尝试使用 sourceTree 从
我尝试将现有项目从 github 存储库导入 aptana studio,但出现错误,提示权限被拒绝(公钥)。 fatal:远端意外挂断 我确保将 ssh 添加到我在 github 中的帐户。我还运行
我正在尝试以这种方式从字符串创建公钥: byte[] keyBytes = Base64.decode(publicKeyStr.getBytes("utf-8"), Base64.DEFAULT);
在 LDAP 服务器中,我以字符串格式存储了我的公钥。我必须比较从 LDAP 服务器检索到的值和用户证书的公钥。 我正在从 LDAP 检索字符串格式的“公钥”。通过以下方法,我得到了公钥格式的输出。
我正在使用 C# ECDiffieHellmanCng 类并使用 sample 中的代码发现了一个(在我看来很奇怪的)行为:任何项目中生成的每个公钥都是一样的!这是正确的行为吗? 例子: using
我正在使用 crypto lib ,遇到了一个问题:我需要将 PublicKey 类型转换为 byte[],因为它可以用私钥完成: privkey.D.Bytes() 我该如何解决这个问题? 最佳答案
我正在尝试创建一个将加密用户消息的应用程序。用户公钥需要作为字符串发布到服务器。我正在像这样生成 Android KyeStore PublicKey: public static Publi
我调用返回 2 个公钥(作为字符串)的 API,每个公钥由 512 位组成: 588506d0c604d8270ac4de9fdc520abe4779128ff5b7940d38fcd13d5e5fd
如果创建了一个新的 ssh key ,请将公钥复制并粘贴到 gitlab 项目,并在 ~/.ssh 中创建一个 conifg 文件... 我仍然无法克隆该项目(我不是所有者,但我被添加为用户) 这就是
我已经在 github 上为我的机器注册了 ssh key ,并通过键入 ssh git@github.com 验证它是否有效。接收认证成功的响应。 但是,当我尝试将机器上的源代码推送到我的 git
在尝试将 byte[] 数组转换为 PublicKey 时出现错误: Exception in thread "main" java.security.spec.InvalidKeySpecExcep
我想从 OpenSSL 获得与 Java PublicKey.getEncoded() 相同的 ASN.1 输出。我使用 EC,曲线类型是 prime256v1。这是我的 OpenSSL 代码: EC
我不想生成新的公钥,有人向我发送他的公钥(类型 PublicKey.sql),然后我将使用此 key 加密一些文本并将其保存在 Oracle DataBase 中。 我找到了一种读取公钥的方法,但我收
我使用以下代码将公钥和私钥转换为字符串 KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); keyPairGen.in
我尝试使用 git 简化我的工作,然后我尝试使用 git pull 我得到“权限被拒绝(公钥),我通过两个命令解决这个问题: 1. ssh-agent /bin/bash 2. ssh-add /ro
我是一名优秀的程序员,十分优秀!