说我们有爱丽丝和鲍勃.
Alice向Bob发送了一条她用Bob的公钥加密的消息.Bob是唯一可以使用他的私钥解密它的人.但他怎么能确定消息来自爱丽丝?
假设他回复,使用Alice的公钥加密他的消息.只有Alice可以解密该消息.但她怎么能确定它是由鲍勃发送的?
爱丽丝是否必须在她的消息中添加某种公共哈希,以便鲍勃可以说"这绝对来自爱丽丝?"
您是否知道在C++或C中演示公钥私钥加密(PPKE)的教程?
我试图了解它是如何工作的,并最终使用Crypto ++使用公共私钥创建自己的加密.也许这是一个Crypto ++ PPKE教程?
也许有人可以解释公钥和私钥之间的关系(如果有的话)?任何人都可以建议我可以使用一些非常简单的公钥和私钥值(如'char*32','char/32')来创建我的简单PPKE程序来理解这个概念?
我们要求将RSA公钥公开为HTTP资源 - 因此 http://myhost.com/publickeys/akeyid 返回公钥.
我想用正确的互联网媒体类型返回它.应该是什么?我承认我发现加密RFC非常难以理解.
作为奖励,如何使用java.security标准库轻松地从该格式转换?
(使用java.security.RSAPublicKey.getEncoded()序列化为字节和java ,可以很容易地从http://tools.ietf.org/html/rfc3280#section-4.1中定义的SubjectPublicKeyInfo字节数组转发..security.spec.X509EncodedKeySpec反序列化那些相同的字节;但是我找不到那种格式的注册媒体类型,它告诉我我应该使用其他格式(x.509证书?).但后来我很挣扎找出如何进行翻译.)
谢谢.
我正在尝试配置我的应用程序(SP)以使用远程IDP.IDP为我提供了配置SP的证书.对于SAML请求,我使用SP的公钥还是IDP?此外,我在哪里可以找到很好的资源来详细研究SAML(除了绿洲正式文件).我发现的教程非常简单(即他们只是描述了SP转到IDP然后重定向,但没有详细介绍SAML消息).绿洲文件令人困惑.谢谢你的回答
我有一个依赖HTTPS构建的Web服务器.因此,我的服务器维护其私钥并发布任何客户端可用于加密其请求的公钥.由于我的服务器是唯一一个拥有私钥来解密使用服务器公钥加密的任何消息的服务器,因此以这种方式发送的任何请求都可以被认为是安全的.
不过我的问题是在回复部分.当服务器将响应发送回客户端时,服务器使用哪个公钥来加密响应消息?
我假设服务器将使用客户端的公钥来加密响应(默认情况下?或配置?).如果是这样,服务器是否从发送给服务器的请求中知道客户端的公钥,或者其他什么方式?
更新:如果我理解不正确,那么在将来的通信中,各方如何知道如何解密另一方发送的消息?某些关键是共享的还是某种方式?
谢谢!
我想获取.pub文件内容的公钥.这是一个.pub文件内容(生成ssh-keygen)的示例:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBPL2s+25Ank3zS6iHUoVk0tS63dZM0LzAaniiDon0tdWwq4vcL4+fV8BsAEcpMeijS92JhDDc9FccXlHbdDcmd6c4ITOt9h9xxhIefGsi1FTVJ/EjVtbqF5m0bu7ruIMGvuP1p5s004roHx9y0UdHvD/yNWLISMhy4nio6jLailIj3FS53Emj1WRNsOrpja3LzPXzhuuj6YnD9yfByT7iGZipxkmleaXrknChPClLI9uhcqtAzBLdd0NVTJLOt/3+d1cSNwdBw9e53wJvpEmH+P8UOZd+oV/y7cHIej4jQpBXVvpJR1Yaluh5RuxY90B0hSescUAj4g/3HVPpR/gE7op6i9Ab//0iXF15uWGlGzipI4lA2/wYEtv8swTjmdCTMNcTDw/1huTDEzZjghIKVpskHde/Lj416c7eSByLqsMg2OhlZGChKznpIjhuNRXz93DwqKuIKvJKSnhqaJDxmDGfG7nlQ/eTwGeAZ6VR50yMPiRTIpuYd767+Nsg486z7p0pnKoBlL6ffTbfeolUX2b6Nb9ZIOxJdpCSNTQRKQ50p4Y3S580cUM1Y2EfjlfIQG1JdmTQYB75AZXi/cB2PvScmF0bXRoj7iHg4lCnSUvRprWA0xbwzCW/wjNqw6MyRX42FFlvSRrmfaxGZxKYbmk3TzBv+Fp+CADPqQm3OQ== test@test.com
Run Code Online (Sandbox Code Playgroud)
如果我是对的,这不是公钥,但可以从此字符串中获取公钥.
这个答案给出了我的问题
的答案/sf/answers/1357126221/
但答案似乎不起作用.我得到一个例外:
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format
Run Code Online (Sandbox Code Playgroud)
在查看答案的评论时,我不是唯一有问题的人...
我该如何修复异常?或者是否有另一种方法从字符串中获取公钥?
我们的朋友在将私有证书加载到httpHandler时遇到问题。
我们正在使用.net核心,并且需要将所有应用程序托管在云中。
主要目标是从SQS获取消息并在使用消耗的数据之后执行一些指定的API快照。
我们的公钥/私钥证书有问题。我们尝试了所有可能的加载方式。
public async Task<HttpResponseMessage> VisitHttps()
{
// Proceed for an invalid cerficate
ServicePointManager.ServerCertificateValidationCallback +=
(sender, certificate, chain, sslPolicyErrors) => true;
// Add the certificate
var handler = new HttpClientHandler();
var cert = GetMyCert();
if (cert != null)
{
handler.ClientCertificates.Add(cert);
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;
//handler.PreAuthenticate = true;
}
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
HttpClient cclient = new HttpClient(handler)
{
//BaseAddress = new Uri("https://someurl.com")
};
cclient.DefaultRequestHeaders.Accept.Clear();
cclient.DefaultRequestHeaders.Accept.Add(new
MediaTypeWithQualityHeaderValue("application/json"));
return await cclient.GetAsync("https://some-url.com/ping"); }
Run Code Online (Sandbox Code Playgroud)
方法GetMyCert()如下所示:
string currentLocation …Run Code Online (Sandbox Code Playgroud) 这实际上分为许多单独的问题以了解整个过程。
据我了解,JWT 只是将三个 JSON 对象分别编码为 base64。然后 Base64 字符串用句点分隔。这纯粹是为了“更短的消息”目的吗?
其中包括标头、“有效负载”和签名。任何拦截它们的人都可以 100% 读取标头和有效负载。它们只是可以解码为 JSON 并读取的 Base64 字符串。
然后MAGIC:服务器收到无法解码的SIGNATURE。签名实际上是标头、有效负载和密钥的哈希值。因此,服务器获取标头、有效负载和它自己的密钥,并生成哈希值。如果此哈希值与消息附带的签名匹配,则该消息是可信的。如果签名不匹配,则消息无效。
我的这一切有问题吗?这里的两个单独的钥匙在哪里?看来用于加密消息的密钥和用于解密消息的密钥是相同的。这是我问题的根源 - 如果您没有回答其他问题,请帮忙解决这个问题。
除此之外,我想知道我是否正确理解了这个过程?另外,“就公钥达成一致”然后交易此处发生的公钥/私钥“混合”的标准在哪里?我所看到的只是用于编码/解码的相同密钥。但这个协议是什么时候达成的呢?顺便说一句,在 .NET 和 Auth0 的上下文中查看这一点,但总体而言。
如果有人有兴趣稍后看到这个问题,我观看/阅读/使用的随机内容:
JWT 总结:https://scotch.io/tutorials/the-anatomy-of-a-json-web-token
公钥/非对称加密:https://youtu.be/3QnD2c4Xovk
哈希: http: //www.webopedia.com/TERM/H/hashing.html
Base64: http: //en.wikipedia.org/wiki/Base64
我一直在 PHP 中使用 openssl 库来生成用于 RSA 加密的密钥对,并且发现在最新版本的 PHP 7.2 中,libsodium 现已集成。
我想更新到较新的库,并且可以生成密钥对。在 openssl 库中,我能够将密钥导出到加密的密钥文件中,以便存储在文件系统上。
libsodium 是如何实现这种等价的?
谢谢,
莱昂
我正在考虑加密应用程序中的安全性,并且想知道它是否可行,以及如果为用户创建的密钥对可以随着发送的每条消息而改变,那么它是否会以任何方式为应用程序添加任何安全性,因此每条消息都是加密的使用不同的私钥?我知道用户的密钥之间非常需要同步,但这只是我正在考虑的假设。谢谢
encryption ×3
rsa ×3
java ×2
private-key ×2
.net ×1
auth0 ×1
c ×1
c# ×1
c++ ×1
cryptography ×1
http ×1
https ×1
jwt ×1
libsodium ×1
php ×1
public-key ×1
saml-2.0 ×1
signing ×1
ssh ×1
ssl ×1