标签: rsa

黑莓智能卡读卡器的例子

我正在为BlackBerry使用BlackBerry智能卡读卡器编写应用程序.没有太多关于这个主题的文档,所以我真的很想,如果有人能给我开始的例子.

基本上,卡上有一个RSA私钥和一个证书(用于配对的公钥).我希望能够加密/解密数据并对其进行签名.最终目标是使用智能卡上包含的客户端证书建立相互认证的SSL连接.

这是我到目前为止设法提出的代码:

SmartCardReader btReader = null;
SmartCardReader[] readers = SmartCardReaderFactory.getInstalledReaders();
for (int i = 0; i < readers.length; i++) {
    SmartCardReader reader = readers[i];
    if (reader.getType().equalsIgnoreCase("bluetooth")) {
        btReader = reader;
        break;
    }
}

SmartCardReaderSession readerSession = reader.openSession();
CryptoSmartCard card = (CryptoSmartCard) readerSession.getSmartCard();
RSACryptoToken token = (RSACryptoToken) card.getCryptoToken("RSA");
Run Code Online (Sandbox Code Playgroud)

token看起来很有希望 - 有一些很好的方法,但有"神秘"的论点.接下来做什么?

cryptography blackberry rsa smartcard smartcard-reader

52
推荐指数
1
解决办法
1602
查看次数

CryptographicException"密钥无法在指定状态下使用." 在尝试导出X509私钥的RSAParameters时

我盯着这看了很长一段时间,感谢MSDN文档我无法弄清楚到底发生了什么.基本上我正在将光盘中的PF​​X文件加载到a中,X509Certificate2并尝试使用公钥加密字符串并使用私钥解密.

为什么我感到困惑:加密/解密在我将引用传递给RSACryptoServiceProvider自身时起作用:

byte[] ed1 = EncryptRSA("foo1", x.PublicKey.Key as RSACryptoServiceProvider);
string foo1 = DecryptRSA(ed1, x.PrivateKey as RSACryptoServiceProvider);
Run Code Online (Sandbox Code Playgroud)

但如果出口和传递RSAParameter:

byte[] ed = EncryptRSA("foo", (x.PublicKey.Key as RSACryptoServiceProvider).ExportParameters(false));
string foo = DecryptRSA(ed, (x.PrivateKey as RSACryptoServiceProvider).ExportParameters(true));
Run Code Online (Sandbox Code Playgroud)

...它会抛出"密钥无法在指定状态下使用".尝试将私钥导出到的异常RSAParameter.请注意,生成PFX的证书标记为可导出(即我在创建证书时使用了pe标志).知道导致异常的是什么吗?

 static void Main(string[] args)
    {
        X509Certificate2 x = new X509Certificate2(@"C:\temp\certs\1\test.pfx", "test");
        x.FriendlyName = "My test Cert";

        X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
        store.Open(OpenFlags.ReadWrite);
        try
        {
            store.Add(x);
        }
        finally
        {
            store.Close();
        }

        byte[] ed1 = EncryptRSA("foo1", x.PublicKey.Key as RSACryptoServiceProvider); …
Run Code Online (Sandbox Code Playgroud)

.net c# encryption cryptography rsa

52
推荐指数
4
解决办法
6万
查看次数

破解RSA密钥

给定以下RSA密钥,如何确定pq的值是什么?

Public Key: (10142789312725007, 5)
Private Key: (10142789312725007, 8114231289041741)
Run Code Online (Sandbox Code Playgroud)

math rsa encryption-asymmetric public-key-encryption

51
推荐指数
4
解决办法
8万
查看次数

RSA加密,长度不好

调用以下函数时:

byte[] bytes = rsa.Encrypt(System.Text.UTF8Encoding.UTF8.GetBytes(stringToEncrypt), true);
Run Code Online (Sandbox Code Playgroud)

我现在得到错误:长度不好.

使用较小的字符串可以工作,任何想法问题可能是我传递的字符串不到200个字符.

c# encryption rsa encryption-asymmetric

50
推荐指数
4
解决办法
4万
查看次数

RSA:获得给定公钥的指数和模数

我需要在JavaScript中使用RSA加密一些数据.周围的所有库都要求指数和模数,但我public.key从对手那里得到一个文件.

如何从RSA文件中检索公共exponentmodulus部分?

openssl rsa public-key

49
推荐指数
3
解决办法
9万
查看次数

使用RSA C#签名和验证签名

我最近发布了有关使用RSA加密大数据的问题,我最终完成了这一点,现在我继续使用用户的私钥实现签名并使用相应的公钥进行验证.但是,每当我比较签名数据和原始消息时,我基本上只会返回false.我希望你的一些人能看出我做错了什么.

这是代码:

public static string SignData(string message, RSAParameters privateKey)
    {
        //// The array to store the signed message in bytes
        byte[] signedBytes;
        using (var rsa = new RSACryptoServiceProvider())
        {
            //// Write the message to a byte array using UTF8 as the encoding.
            var encoder = new UTF8Encoding();
            byte[] originalData = encoder.GetBytes(message);

            try
            {
                //// Import the private key used for signing the message
                rsa.ImportParameters(privateKey);

                //// Sign the data, using SHA512 as the hashing algorithm 
                signedBytes = rsa.SignData(originalData, CryptoConfig.MapNameToOID("SHA512"));
            }
            catch …
Run Code Online (Sandbox Code Playgroud)

c# encoding signing rsa

49
推荐指数
1
解决办法
5万
查看次数

Algid解析错误,不是序列

尝试使用该方法从文件中读取RSA私钥时

public PrivateKey getPrivateKey()
        throws NoSuchAlgorithmException,
        InvalidKeySpecException, IOException {

    final InputStream inputStream = getClass().getClassLoader()
                    .getResourceAsStream("privatekey");
    byte[] privKeyBytes = null;
    try {
        privKeyBytes = IOUtils.toByteArray(inputStream);
    } catch (final IOException exception) {
        LOGGER.error("", exception);
        IOUtils.closeQuietly(inputStream);
    }

    LOGGER.debug("privKeyBytes: {}", privKeyBytes);

    String BEGIN = "-----BEGIN RSA PRIVATE KEY-----";
    String END = "-----END RSA PRIVATE KEY-----";
    String str = new String(privKeyBytes);
    if (str.contains(BEGIN) && str.contains(END)) {
        str = str.substring(BEGIN.length(), str.lastIndexOf(END));
    }

    KeyFactory fac = KeyFactory.getInstance("RSA");
    EncodedKeySpec privKeySpec =
            new PKCS8EncodedKeySpec(Base64.decode(str.getBytes()));
    return fac.generatePrivate(privKeySpec);
}
Run Code Online (Sandbox Code Playgroud)

我得到了例外

java.security.spec.InvalidKeySpecException: …
Run Code Online (Sandbox Code Playgroud)

java security rsa

47
推荐指数
3
解决办法
4万
查看次数

如何从byte []数组中恢复RSA公钥?

我想知道是否有可能恢复我之前转换为字节数组的RSA公钥.

byte[] keyBytes = publicKey.getEncoded();
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

java cryptography rsa

46
推荐指数
2
解决办法
4万
查看次数

保存并从磁盘加载crypto/rsa PrivateKey

我正在使用crypto/rsa,并试图找到一种方法来正确保存和加载密钥.是否有正确的方法来创建[]byte一个rsa.PrivateKey.如果是这样,有没有办法正确地这样做rsa.PublicKey

非常感谢你们.

cryptography rsa go

46
推荐指数
3
解决办法
3万
查看次数

SHA1 VS RSA:它们之间有什么区别?

SHA1和RSA有什么区别?它们只是不同的算法,还是它们在某种程度上从根本上(即用于不同的事物)不同.

encryption cryptography rsa sha

45
推荐指数
5
解决办法
5万
查看次数