Вот код
namespace TpcEncryptPkcs7
{
class Program
{
private static readonly string DATA_TO_ENCRYPT = "{\"fpan\":\"5342270061823097\",\"issuerCardRefId\":\"327\",\"exp\":\"1229\",\"cardholderName\":\"RABBANI\"}";
static void Main(string[] args)
{
// Load the provided PEM certificate for encryption
var certificate = LoadCertificateFromPem(@"
-----BEGIN CERTIFICATE-----
MIIEKTCCAxGgAwIBAgIMa3BA3M18ovOLDPVJMA0GCSqGSIb3DQEBCwUAMF0xCzAJ
... (rest of your certificate) ...
-----END CERTIFICATE-----";
// Encrypt using the specified certificate
byte[] encData = EncryptPKCS7(Encoding.UTF8.GetBytes(DATA_TO_ENCRYPT),
certificate);
Console.WriteLine("Encrypted data = " + Hex.ToHexString(encData));
}
private static X509Certificate2 LoadCertificateFromPem(string pem)
{
// Remove the header and footer and convert the PEM string to a byte array
var base64 = pem.Replace("-----BEGIN CERTIFICATE-----", "")
.Replace("-----END CERTIFICATE-----", "")
.Replace("\n", "")
.Replace("\r", "");
var certBytes = Convert.FromBase64String(base64);
return new X509Certificate2(certBytes);
}
private static byte[] EncryptPKCS7(byte[] plainData, X509Certificate2 certificate)
{
var generator = new CmsEnvelopedDataGenerator();
// Extract the public key from the certificate
var pubKey = certificate.GetRSAPublicKey();
// Use OAEP with SHA-256 and MGF1
IAsymmetricBlockCipher oaepParams = new OaepEncoding(
new RsaEngine(),
new Sha256Digest(), // Hash algorithm for OAEP and MGF1
new Sha256Digest(), // Mask generation function (MGF1) with SHA256
null // Optional encoding parameter (PSource)
);
var recipientInfoGenerator = new JceKeyTransRecipientInfoGenerator(KEY_IDENTIFIER, oaepParams, pubKey);
generator.AddRecipientInfoGenerator(recipientInfoGenerator);
var data = new CmsProcessableByteArray(plainData);
var encryptor = new BcCMSContentEncryptorBuilder(CmsAlgorithm.Aes256Cbc);
var enveloped = generator.Generate(data, encryptor.Build());
return enveloped.GetEncoded();
}
}
}
У меня есть вопросы, как добавить приведенные ниже параметры в C#.
Мне нужно добавить key_identifier, алогрифм oaepParams.
var recipientInfoGenerator = new JceKeyTransRecipientInfoGenerator(KEY_IDENTIFIER, oaepParams, pubKey);
generator.AddRecipientInfoGenerator(recipientInfoGenerator);
var data = new CmsProcessableByteArray(plainData);
var encryptor = new BcCMSContentEncryptorBuilder(CmsAlgorithm.Aes256Cbc);
var enveloped = generator.Generate(data, encryptor.Build());
return enveloped.GetEncoded();
Подробнее здесь: https://stackoverflow.com/questions/793 ... oaepwithsh
Данные шифрования в алгоритме шифрования формата PKCS#7: ⇐ C#
Место общения программистов C#
-
Anonymous
1737887393
Anonymous
Вот код
namespace TpcEncryptPkcs7
{
class Program
{
private static readonly string DATA_TO_ENCRYPT = "{\"fpan\":\"5342270061823097\",\"issuerCardRefId\":\"327\",\"exp\":\"1229\",\"cardholderName\":\"RABBANI\"}";
static void Main(string[] args)
{
// Load the provided PEM certificate for encryption
var certificate = LoadCertificateFromPem(@"
-----BEGIN CERTIFICATE-----
MIIEKTCCAxGgAwIBAgIMa3BA3M18ovOLDPVJMA0GCSqGSIb3DQEBCwUAMF0xCzAJ
... (rest of your certificate) ...
-----END CERTIFICATE-----";
// Encrypt using the specified certificate
byte[] encData = EncryptPKCS7(Encoding.UTF8.GetBytes(DATA_TO_ENCRYPT),
certificate);
Console.WriteLine("Encrypted data = " + Hex.ToHexString(encData));
}
private static X509Certificate2 LoadCertificateFromPem(string pem)
{
// Remove the header and footer and convert the PEM string to a byte array
var base64 = pem.Replace("-----BEGIN CERTIFICATE-----", "")
.Replace("-----END CERTIFICATE-----", "")
.Replace("\n", "")
.Replace("\r", "");
var certBytes = Convert.FromBase64String(base64);
return new X509Certificate2(certBytes);
}
private static byte[] EncryptPKCS7(byte[] plainData, X509Certificate2 certificate)
{
var generator = new CmsEnvelopedDataGenerator();
// Extract the public key from the certificate
var pubKey = certificate.GetRSAPublicKey();
// Use OAEP with SHA-256 and MGF1
IAsymmetricBlockCipher oaepParams = new OaepEncoding(
new RsaEngine(),
new Sha256Digest(), // Hash algorithm for OAEP and MGF1
new Sha256Digest(), // Mask generation function (MGF1) with SHA256
null // Optional encoding parameter (PSource)
);
var recipientInfoGenerator = new JceKeyTransRecipientInfoGenerator(KEY_IDENTIFIER, oaepParams, pubKey);
generator.AddRecipientInfoGenerator(recipientInfoGenerator);
var data = new CmsProcessableByteArray(plainData);
var encryptor = new BcCMSContentEncryptorBuilder(CmsAlgorithm.Aes256Cbc);
var enveloped = generator.Generate(data, encryptor.Build());
return enveloped.GetEncoded();
}
}
}
У меня есть вопросы, как добавить приведенные ниже параметры в C#.
Мне нужно добавить key_identifier, алогрифм oaepParams.
var recipientInfoGenerator = new JceKeyTransRecipientInfoGenerator(KEY_IDENTIFIER, oaepParams, pubKey);
generator.AddRecipientInfoGenerator(recipientInfoGenerator);
var data = new CmsProcessableByteArray(plainData);
var encryptor = new BcCMSContentEncryptorBuilder(CmsAlgorithm.Aes256Cbc);
var enveloped = generator.Generate(data, encryptor.Build());
return enveloped.GetEncoded();
Подробнее здесь: [url]https://stackoverflow.com/questions/79388268/encrypting-data-in-pkcs7-format-key-encryption-algorithm-is-rsa-none-oaepwithsh[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия