我已经使用 DiffieHellman 成功交换了密钥,现在想要使用这些密钥来加密我需要使用 RSA 加密通过线路发送的对象。
DiffieHellman 为我提供了实际密钥:
问题 #1
有没有办法将实际密钥直接导入到 RSACryptoServiceProvider 变量中?
看来我只能找到基于 XML 导入的示例,但这些示例具有我无法从 DiffieHellman 获得的额外信息(例如对于公钥,XML 带有指数值,对于私钥,XMLS 带有 P、Q、DP、DQ) ,逆......DiffieHellman 都没有提供)
问题#2
将提供的 DiffieHellman 私钥/公钥组合到基于 RSA 的加密调用中的正确方法是什么,以便调用加密/解密可以在两端的线路上进行?
c# encryption cryptography encryption-asymmetric public-key-encryption
我有一段简单的 JavaScript:
<html>
<script type="text/javascript" src="http://cdn.rawgit.com/travist/jsencrypt/v2.1.0/bin/jsencrypt.js"></script>
<script type="text/javascript">
var message = "This is my message"
// we create a new JSEncrypt object for rsa encryption
var rsaEncrypt = new JSEncrypt();
var publicKey = "-----BEGIN PUBLIC KEY-----" +
"\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQK" +
"BgQCQDxDFOYJpkCaqeX4CBVNCtBjX\nMZgGMo" +
"lSs2wYrVu1ixr36KpeJcRcYhz+AnyhnUpYkgk" +
"+hEqJtDSNirU5Dk5oVYYi\ngf2uLogV5Tp/ka" +
"K49r9vtxldcHraZIgNQjcdeQUd/viKd/3DvM8" +
"naWR/mTG0nCBE\nrEQkATW/xXynJh/COQIDAQ" +
"AB\n-----END PUBLIC KEY-----"
rsaEncrypt.setPublicKey(publicKey);
var encryptedMessage = rsaEncrypt.encrypt(message);
console.log(encryptedMessage)
</script>
</html>
Run Code Online (Sandbox Code Playgroud)
我觉得每次运行时都应该在控制台中产生相同的输出,但事实并非如此。
示例输出:
abqE+YkCMKFWgsazbZpfGvoXLci9FL/wZLYUMR6ZFkolsvJC5MdJgq5yn+AXXy8xlKHDOry6czAaOQOTl2HXdKSfsypc8nqDU8Sx5PuEgMYjvJ/dEyfU6jVuxfH1Qmuk6aOGVHePNfDlC4kSjgp1RXToSP5NqAEi24EuMx3uulI=
OzZM03Pki3o631KOuZ5nyQKu1xXRbLHhrR0WnjE5Ns5SssoiCEwlrS+svtP0cbZaYWZJc+FlZQNFUam4iC233BKnY5Nrr5Ppj14eaBvJ4x3FR8FiLwtyEW7nTzisAS7Ys2RKPjUzmkiOCZHwIpXnUO10KVo8763+JIuDB0cDPS4=
Run Code Online (Sandbox Code Playgroud)
谁能解释这种行为?
这个问题看起来很简单,但我正在准备 70-483 C# 考试,有点困惑。
我知道公钥/私钥是数学上相互关联的属性。一个可以加密消息,另一个可以解密。
我读到的所有内容,例如维基百科、Quora、codeproject 都显示了用于加密的公钥和用于解密的私钥。
然而,我正在进行的模拟考试(MeasureUp)似乎改变了所使用的考试。
有时答案声明使用公钥进行加密,但有时他们声明使用私钥。
例子:
应用程序必须与 DMV 安全通信。DMV 必须确保从您的应用程序发送的数据在传输过程中没有被修改。
回答示例:
生成数据的哈希值。使用您公司的私钥加密哈希值。将数据和加密的哈希值发送到 DMV。
然后“显示答案”部分继续解释上面明确指出使用私钥加密的内容。
难道你必须在上下文中考虑什么是公开的、什么是私有的吗?
例如
A) 如果其他人是否可以看到该消息并不重要,只要他们无法制作自己的消息即可 - 使用您“保密”的密钥进行加密。
B) 如果其他人可以发送消息,只要我是唯一可以阅读该消息的人 - 使用公开可用的密钥进行加密。
我觉得 MeasureUp 可能错了,但我肯定比大公司更有可能错。
请有人解释/澄清为什么这个答案是正确的?
我需要验证签名的数据。我不知道如何使用公钥。
public bool VerifyData(string data, string signature)
{
//decode signature from base 64
byte[] signatureByte = System.Convert.FromBase64String(signature);
//hash data to sha256
string hashedData = ConvertToSHA256(data);
byte[] hashedDataByte = System.Convert.FromBase64String(hashedData);
//verify with RSA PSS
string absPath = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/TP/public");
string publicKeyString = File.ReadAllText(absPath);
publicKeyString = RemoveRSAHeaderAndFooter(publicKeyString);
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
//This causes error
RSA.ImportCspBlob(System.Convert.FromBase64String(publicKeyString));
RSAParameters rsaParams = RSA.ExportParameters(true);
RSACng RSACng = new RSACng();
RSACng.ImportParameters(rsaParams);
return RSACng.VerifyData(hashedDataByte, signatureByte, HashAlgorithmName.SHA256, RSASignaturePadding.Pss);
}
Run Code Online (Sandbox Code Playgroud)
导致RSA.ImportCspBlob错误。我的公钥是字符串类型。它看起来像这样:
-----BEGIN PUBLIC KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXX
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)
我怎样才能验证它? …
有人请说明 RSA 算法的两个或三个应用。我听说 RSA 用于 SSL。真的吗?
我们可以使用 ECC 加密大文件吗?或者就像 RSA 只适用于小文件一样?任何人都可以推荐一个用于 ECC Java 实现的好网站吗?
谢谢
我有使用 2048 位公钥/私钥加密的 GPG 文件,但我有一个大问题,我丢失了密钥。我知道解密的机会非常低:(。
是否有“蛮力”工具来解密 GPG 文件?我会让这个工具运行几天来试试运气。
gpg: encrypted with RSA key, ID E81B3FBCA9713B30
gpg: decryption failed: No secret key
# off=0 ctb=85 tag=1 hlen=3 plen=268
:pubkey enc packet: version 3, algo 1, keyid E81B3FBCA9713B30
data: [2048 bits]
# off=271 ctb=d2 tag=18 hlen=2 plen=0 partial new-ctb
:encrypted data packet:
length: unknown
mdc_method: 2
Run Code Online (Sandbox Code Playgroud)
谢谢,
我曾经sn.exe生成密钥对(私钥和公钥).我从私钥中提取公钥如下:
sn -p keyPair.snk publicKey.snk
我通过使用C#读取它并将其作为二进制文件存储在数据库中以用于加密我的数据.
有没有办法从C#中的私钥中提取公钥而不使用sn.exe?
注意:我想要一个公钥作为byte与我在数据库中存储的公钥进行比较.
encryption ×6
c# ×3
cryptography ×1
gpgpu ×1
java ×1
javascript ×1
public-key ×1
rsa ×1
unix ×1