BouncyCastle RSAPrivateKey к.NET RSAPrivateKey

Вы можете обернуть содержимое li в другой элемент, такой как span. Затем задайте li большее font-size и установите нормальное значение font-size на span:

http://jsfiddle.net/RZr2r/

li {
    font-size: 36px;
}
li span {
    font-size: 18px;
}
  • Item 1
  • Item 2
  • Item 3

18
задан albertjan 9 February 2015 в 08:36
поделиться

3 ответа

Я нашел это!

Или, по крайней мере, его часть :)

Что касается PrivateKey.ExportToParameters (true) Все еще не работает, но у него есть кое-что поделать с тем, что ключ был 2048 бит. Потому что, когда я изменил его на 1024 бит, он работал. Так что, если кто-нибудь когда-нибудь узнает, зачем держать меня в курсе.

Итак, мы снова.

//BouncyCastle's Key objects
RsaPrivateCrtKeyParameters rpckp = ((RsaPrivateCrtKeyParameters)ackp.Private);

//.NET RSA Key objects
System.Security.Cryptography.RSACryptoServiceProvider rcsp = new System.Security.Cryptography.RSACryptoServiceProvider();
System.Security.Cryptography.RSAParameters parms = new System.Security.Cryptography.RSAParameters();

//So the thing changed is offcourse the ToByteArrayUnsigned() instead of
//ToByteArray()
parms.Modulus   = rpckp.Modulus.ToByteArrayUnsigned();
parms.P         = rpckp.P.ToByteArrayUnsigned();
parms.Q         = rpckp.Q.ToByteArrayUnsigned();
parms.DP        = rpckp.DP.ToByteArrayUnsigned();
parms.DQ        = rpckp.DQ.ToByteArrayUnsigned();
parms.InverseQ  = rpckp.QInv.ToByteArrayUnsigned();
parms.D         = rpckp.Exponent.ToByteArrayUnsigned();
parms.Exponent  = rpckp.PublicExponent.ToByteArrayUnsigned();

//So now this now appears to work.
rcsp.ImportParameters(parms);

Итак, теперь я могу добавить полный сертификат в свой магазин :)

6
ответ дан 30 November 2019 в 07:34
поделиться

Вы можете забыть об исключениях и избежать таких проблем с производительностью. Это заставляет API говорить сам за себя.

int getUserAge(String userName) 
{
    int age = 0;
    UserSearchResult result = getUser(userName);
    if (result.getFoundUser())
    {
        User user = result.getUser();
        age = user.getAge();
    }
    return age;
}
-121--2626701-

В принципе, я согласен с Игнасио выше, но вы также можете использовать type , чтобы проверить, является ли что-то кортежем или списком.

>>> a = (1,)
>>> type(a)
(type 'tuple')
>>> a = [1]
>>> type(a)
(type 'list')
-121--607541-

К вашему сведению, я добавил эту функциональность в класс Org.BouncycCastle.Security.DotNetUtilities; он будет в выпуске 1.6, скоро.

12
ответ дан 30 November 2019 в 07:34
поделиться

Думаю, я нашел решение этой проблемы. Это не имеет ничего общего с ключом per, а скорее с объектом X509Certificate2, который должен быть создан с флагом X509KeyStorageFlags.Exportable.

В этом случае ваш X509Certificate2 был создан с помощью этого метода: System.Security.Cryptography.X509Certificates.X509Certificate2 netcert = DotNetUtilities.ToX509Certificate (cert);

Поэтому убедитесь, что вы передали экспортируемый флаг в конструкторе X509Certificate2 в этом методе. В моей ситуации мне нужно было подписать некоторые данные с помощью закрытого ключа, расположенного в файле PFX, поэтому мне пришлось написать следующее:

X509KeyStorageFlags flags = X509KeyStorageFlags.Exportable;
X509Certificate2 cert = new X509Certificate2 (" my.pfx "," somepass ", flags);

Теперь я могу использовать
RSACryptoServiceProvider rsa = (RSACryptoServiceProvider) cert.PrivateKey;
RSAParameters rsaParam = rsa. ExportParameters (true);

HTH,

Stefan

4
ответ дан 30 November 2019 в 07:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: