Я боролся с этим на протяжении многих лет и просто не могу отпустить это. Что бы я ни пытался, я не могу понять пример подписи электронной почты DKIM в Приложении А. Я проследил за ошибками, которые исправили заголовки в примере, само существование которого предполагает, что это должно работать. Хэш тела работает так, как ожидалось, но вычисляемая мной подпись — нет. Мне интересно, дефектный ли пример или я чего-то не понимаю в том, как он должен работать.
Закрытый ключ из Приложения C в RFC 6376
const string RSA_PRIVATE_KEY = @" -----BEGIN RSA PRIVATE KEY-----
MIICXwIBAAKBgQDwIRP/UC3SBsEmGqZ9ZJW3/DkMoGeLnQg1fWn7/zYtIxN2SnFC
jxOCKG9v3b4jYfcTNh5ijSsq631uBItLa7od+v/RtdC2UzJ1lWT947qR+Rcac2gb
to/NMqJ0fzfVjH4OuKhitdY9tf6mcwGjaNBcWToIMmPSPDdQPNUYckcQ2QIDAQAB
AoGBALmn+XwWk7akvkUlqb+dOxyLB9i5VBVfje89Teolwc9YJT36BGN/l4e0l6QX
/1//6DWUTB3KI6wFcm7TWJcxbS0tcKZX7FsJvUz1SbQnkS54DJck1EZO/BLa5ckJ
gAYIaqlA9C0ZwM6i58lLlPadX/rtHb7pWzeNcZHjKrjM461ZAkEA+itss2nRlmyO
n1/5yDyCluST4dQfO8kAB3toSEVc7DeFeDhnC1mZdjASZNvdHS4gbLIA1hUGEF9m
3hKsGUMMPwJBAPW5v/U+AWTADFCS22t72NUurgzeAbzb1HWMqO4y4+9Hpjk5wvL/
eVYizyuce3/fGke7aRYw/ADKygMJdW8H/OcCQQDz5OQb4j2QDpPZc0Nc4QlbvMsj
7p7otWRO5xRa6SzXqqV3+F0VpqvDmshEBkoCydaYwc2o6WQ5EBmExeV8124XAkEA
qZzGsIxVP+sEVRWZmW6KNFSdVUpk3qzK0Tz/WjQMe5z0UunY9Ax9/4PVhp/j61bf
eAYXunajbBSOLlx4D+TunwJBANkPI5S9iylsbLs6NkaMHV6k5ioHBBmgCak95JGX
GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc=
-----END RSA PRIVATE KEY-----";
Заголовки из примера сообщения и подписи в Приложении A, с заголовком подписи, включая хеш тела, добавленным к подписанным заголовкам, как описано в разделе 3.7
const string HEADERS = @"Received: from client1.football.example.com [192.0.2.1]
by submitserver.example.com with SUBMISSION;
Fri, 11 Jul 2003 21:01:54 -0700 (PDT)
From: Joe SixPack
To: Suzie Q
Subject: Is dinner ready?
Date: Fri, 11 Jul 2003 21:00:37 -0700 (PDT)
Message-ID:
DKIM-Signature: v=1; a=rsa-sha256; s=brisbane; d=example.com;
c=simple/simple; q=dns/txt; i=joe@football.example.com;
h=Received : From : To : Subject : Date : Message-ID;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=";
const string EXPECTED_SIGNATURE = "AuUoFEfDxTDkHlLXSZEpZj79LICEps6eda7W3deTVFOk4yAUoqOB4nujc7YopdG5dWLSdNg6xNAZpOPr+kHxt1IrE+NahM6L/LbvaHutKVdkLLkpVaVVQPzeRDI009SO2Il5Lu7rDNH6mZckBdrIx0orEtZV4bmp/YzhwvcubU4=";
И, наконец, рассматриваемая логика. Со временем это стало намного более кратким, поскольку в структуру были добавлены различные криптографические функции, но я всегда получал одну и ту же неожиданную подпись.
var rsa = System.Security.Cryptography.RSA.Create();
rsa.ImportFromPem(RSA_PRIVATE_KEY);
var signature = rsa.SignData(Encoding.UTF8.GetBytes(HEADERS),
System.Security.Cryptography.HashAlgorithmName.SHA256,
System.Security.Cryptography.RSASignaturePadding.Pkcs1);
var signatureString = Convert.ToBase64String(signature);
Assert.Equal(EXPECTED_SIGNATURE, signatureString);
И как бы то ни было, вот что я рассчитал
PgpOeOGQgKDzYvwezymrJpa2KzjMkcOF86HaZNagCNuOwPMW67T+PgNfb1LyGeey07FsOhBQuQVUm36BFyvu8V3w6B/LYJITIfiC+GUA/C8/iJUTswSv9NOeZnjsebstqjI4LTuXRDqmQqex9TbW/8SA2rlZwegAyg0biKj75pg=
Подробнее здесь: https://stackoverflow.com/questions/790 ... 4871-valid
Действителен ли пример DKIM в RFC 6376 (и RFC 4871)? ⇐ C#
Место общения программистов C#
-
Anonymous
1728916496
Anonymous
Я боролся с этим на протяжении многих лет и просто не могу отпустить это. Что бы я ни пытался, я не могу понять пример подписи электронной почты DKIM в Приложении А. Я проследил за ошибками, которые исправили заголовки в примере, само существование которого предполагает, что это должно работать. Хэш тела работает так, как ожидалось, но вычисляемая мной подпись — нет. Мне интересно, дефектный ли пример или я чего-то не понимаю в том, как он должен работать.
Закрытый ключ из Приложения C в RFC 6376
const string RSA_PRIVATE_KEY = @" -----BEGIN RSA PRIVATE KEY-----
MIICXwIBAAKBgQDwIRP/UC3SBsEmGqZ9ZJW3/DkMoGeLnQg1fWn7/zYtIxN2SnFC
jxOCKG9v3b4jYfcTNh5ijSsq631uBItLa7od+v/RtdC2UzJ1lWT947qR+Rcac2gb
to/NMqJ0fzfVjH4OuKhitdY9tf6mcwGjaNBcWToIMmPSPDdQPNUYckcQ2QIDAQAB
AoGBALmn+XwWk7akvkUlqb+dOxyLB9i5VBVfje89Teolwc9YJT36BGN/l4e0l6QX
/1//6DWUTB3KI6wFcm7TWJcxbS0tcKZX7FsJvUz1SbQnkS54DJck1EZO/BLa5ckJ
gAYIaqlA9C0ZwM6i58lLlPadX/rtHb7pWzeNcZHjKrjM461ZAkEA+itss2nRlmyO
n1/5yDyCluST4dQfO8kAB3toSEVc7DeFeDhnC1mZdjASZNvdHS4gbLIA1hUGEF9m
3hKsGUMMPwJBAPW5v/U+AWTADFCS22t72NUurgzeAbzb1HWMqO4y4+9Hpjk5wvL/
eVYizyuce3/fGke7aRYw/ADKygMJdW8H/OcCQQDz5OQb4j2QDpPZc0Nc4QlbvMsj
7p7otWRO5xRa6SzXqqV3+F0VpqvDmshEBkoCydaYwc2o6WQ5EBmExeV8124XAkEA
qZzGsIxVP+sEVRWZmW6KNFSdVUpk3qzK0Tz/WjQMe5z0UunY9Ax9/4PVhp/j61bf
eAYXunajbBSOLlx4D+TunwJBANkPI5S9iylsbLs6NkaMHV6k5ioHBBmgCak95JGX
GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc=
-----END RSA PRIVATE KEY-----";
Заголовки из примера сообщения и подписи в Приложении A, с заголовком подписи, включая хеш тела, добавленным к подписанным заголовкам, как описано в разделе 3.7
const string HEADERS = @"Received: from client1.football.example.com [192.0.2.1]
by submitserver.example.com with SUBMISSION;
Fri, 11 Jul 2003 21:01:54 -0700 (PDT)
From: Joe SixPack
To: Suzie Q
Subject: Is dinner ready?
Date: Fri, 11 Jul 2003 21:00:37 -0700 (PDT)
Message-ID:
DKIM-Signature: v=1; a=rsa-sha256; s=brisbane; d=example.com;
c=simple/simple; q=dns/txt; i=joe@football.example.com;
h=Received : From : To : Subject : Date : Message-ID;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=";
const string EXPECTED_SIGNATURE = "AuUoFEfDxTDkHlLXSZEpZj79LICEps6eda7W3deTVFOk4yAUoqOB4nujc7YopdG5dWLSdNg6xNAZpOPr+kHxt1IrE+NahM6L/LbvaHutKVdkLLkpVaVVQPzeRDI009SO2Il5Lu7rDNH6mZckBdrIx0orEtZV4bmp/YzhwvcubU4=";
И, наконец, рассматриваемая логика. Со временем это стало намного более кратким, поскольку в структуру были добавлены различные криптографические функции, но я всегда получал одну и ту же неожиданную подпись.
var rsa = System.Security.Cryptography.RSA.Create();
rsa.ImportFromPem(RSA_PRIVATE_KEY);
var signature = rsa.SignData(Encoding.UTF8.GetBytes(HEADERS),
System.Security.Cryptography.HashAlgorithmName.SHA256,
System.Security.Cryptography.RSASignaturePadding.Pkcs1);
var signatureString = Convert.ToBase64String(signature);
Assert.Equal(EXPECTED_SIGNATURE, signatureString);
И как бы то ни было, вот что я рассчитал
PgpOeOGQgKDzYvwezymrJpa2KzjMkcOF86HaZNagCNuOwPMW67T+PgNfb1LyGeey07FsOhBQuQVUm36BFyvu8V3w6B/LYJITIfiC+GUA/C8/iJUTswSv9NOeZnjsebstqjI4LTuXRDqmQqex9TbW/8SA2rlZwegAyg0biKj75pg=
Подробнее здесь: [url]https://stackoverflow.com/questions/79083514/is-the-dkim-example-in-rfc-6376-and-rfc-4871-valid[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия