标签: public-key-encryption

将 Diffie-Hellman 密钥交换与 RSA 加密相结合

我已经使用 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

0
推荐指数
1
解决办法
2629
查看次数

JSEncrypt 每次为相同的消息和公钥生成不同的输出

我有一段简单的 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)

谁能解释这种行为?

javascript encryption public-key-encryption public-key

0
推荐指数
1
解决办法
2879
查看次数

什么是私钥,什么是公钥?

这个问题看起来很简单,但我正在准备 70-483 C# 考试,有点困惑。

我知道公钥/私钥是数学上相互关联的属性。一个可以加密消息,另一个可以解密。

我读到的所有内容,例如维基百科Quoracodeproject 都显示了用于加密的公钥和用于解密的私钥。

然而,我正在进行的模拟考试(MeasureUp)似乎改变了所使用的考试。

有时答案声明使用公钥进行加密,但有时他们声明使用私钥。

例子:

应用程序必须与 DMV 安全通信。DMV 必须确保从您的应用程序发送的数据在传输过程中没有被修改。

回答示例:

生成数据的哈希值。使用您公司的私钥加密哈希值。将数据和加密的哈希值发送到 DMV。

然后“显示答案”部分继续解释上面明确指出使用私钥加密的内容。

难道你必须在上下文中考虑什么是公开的、什么是私有的吗?

例如

A) 如果其他人是否可以看到该消息并不重要,只要他们无法制作自己的消息即可 - 使用您“保密”的密钥进行加密。

B) 如果其他人可以发送消息,只要我是唯一可以阅读该消息的人 - 使用公开可用的密钥进行加密。

我觉得 MeasureUp 可能错了,但我肯定比大公司更有可能错。

请有人解释/澄清为什么这个答案是正确的?

encryption public-key-encryption

0
推荐指数
1
解决办法
295
查看次数

C# RSA 导入公钥

我需要验证签名的数据。我不知道如何使用公钥。

    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)

我怎样才能验证它? …

c# encryption public-key-encryption

0
推荐指数
1
解决办法
6135
查看次数

在哪里使用 RSA?

有人请说明 RSA 算法的两个或三个应用。我听说 RSA 用于 SSL。真的吗?

rsa encryption-asymmetric public-key-encryption

-1
推荐指数
1
解决办法
2067
查看次数

Java中的ECC加解密

我们可以使用 ECC 加密大文件吗?或者就像 RSA 只适用于小文件一样?任何人都可以推荐一个用于 ECC Java 实现的好网站吗?

谢谢

java encryption public-key-encryption

-1
推荐指数
1
解决办法
2万
查看次数

无需私钥即可解密 GPG 文件

我有使用 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)

谢谢,

unix encryption gpgpu public-key-encryption

-3
推荐指数
1
解决办法
147
查看次数

从C#中的私钥中提取公钥

我曾经sn.exe生成密钥对(私钥和公钥).我从私钥中提取公钥如下:

sn -p keyPair.snk publicKey.snk

我通过使用C#读取它并将其作为二进制文件存储在数据库中以用于加密我的数据.

有没有办法从C#中的私钥中提取公钥而不使用sn.exe

注意:我想要一个公钥作为byte与我在数据库中存储的公钥进行比较.

c# public-key-encryption

-8
推荐指数
1
解决办法
1418
查看次数