Форум программистов, компьютерный форум, киберфорум
Go (Golang)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 01.07.2019
Сообщений: 36

Не выходит получить публичный ключ из PEM формата

15.04.2020, 14:19. Показов 1172. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main
 
import (
    "fmt"
    "crypto/x509"
    "crypto/rsa"
    "encoding/pem"
)
 
var pub string = "-----BEGIN RSA PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyqr5QwJzufJb9oJGA19svullqKlipBlaqAbyOKufKz7Cc73LctFPL9QF2+5YSY+wpDYFZHJx7mtTql6evQg0hq9fXSm/BvVwbEbm2VtWIWkJNYVFu4ORtNCnidk7d5T89ZlaaxIO0Tw601Q3NaQTIQDdh7CVhixAhQml7VgWJ3+I/2cH4BbV1Vse6oYXGxLMj09N28QSenst4uMSlMZGm+0KEQrOMQ7yLJHIYF2NZ2jEckSomaWFdrbGIs2xPtHke+XQyUDcEKz5UU36VBqTOjiWPqu2P8WaVRZFyryYH5v7PGJ9AUrIFxMgfebIaAUr9Teh0JC5ZBtb/xFbDbzu2QIDAQAB-----END RSA PUBLIC KEY-----"
var publicKey []byte
var wait sync.WaitGroup
 
func check(e error) {
    if e != nil {
        panic(e)
    }
}
 
func BytesToPublicKey(pub []byte) *rsa.PublicKey {
    block, _ := pem.Decode(pub)
    enc := x509.IsEncryptedPEMBlock(block)
    b := block.Bytes
    
    if enc {
        b, _ = x509.DecryptPEMBlock(block, nil)
        
    }
    ifc, _ := x509.ParsePKIXPublicKey(b)
    key, _ := ifc.(*rsa.PublicKey)
    
    return key
}
 
func main() {
    fmt.Printf("%s\n", BytesToPublicKey([]byte(pub)))
    
}
выбрасывает исключение... почему?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.04.2020, 14:19
Ответы с готовыми решениями:

Публичный ключ сертификатора
Вопрос: Чем можно извлечь публичный ключ сертфикатора из его id-файла? Проблема: Обнаружил, что в АК отсутствует один сертификат, теперь...

Как сменить публичный ключ?
Заранее сорри, с терминологией траблы. Попробую объяснить на пальцах. Есть хост1 и хост2. Я настроил ssh на обоих, скопировал на хост1...

Публичный ключ для платного приложения
Недавно увидел что Янедекс открыл свой googleplay. и что меня порадовало там бесплатная регистрация. Хочу разместить платное приложение -...

2
64 / 55 / 30
Регистрация: 30.12.2015
Сообщений: 166
15.04.2020, 23:45
veter0, в go нет исключений, эт первое, а второе, наверное не стоит игнорировать все ошибки и если имеется ввиду паника, то там чаще всего есть стектрейс, по которому можно определить в каком месте приложение упало.

Добавлено через 36 минут
и падает скорее всего вот тут ifc.(*rsa.PublicKey)
чтоб избежать паники надо делать так
Go
1
2
3
4
key, ok := ifc.(*rsa.PublicKey)
if !ok {
return fmt.Errorf("blablabla")
}
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
16.04.2020, 05:32
Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main
 
import (
    "crypto/rsa"
    "crypto/x509"
    "encoding/pem"
    "fmt"
)
 
var pub string = `-----BEGIN RSA PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyqr5QwJzufJb9oJGA19s
vullqKlipBlaqAbyOKufKz7Cc73LctFPL9QF2+5YSY+wpDYFZHJx7mtTql6evQg0
hq9fXSm/BvVwbEbm2VtWIWkJNYVFu4ORtNCnidk7d5T89ZlaaxIO0Tw601Q3NaQT
IQDdh7CVhixAhQml7VgWJ3+I/2cH4BbV1Vse6oYXGxLMj09N28QSenst4uMSlMZG
m+0KEQrOMQ7yLJHIYF2NZ2jEckSomaWFdrbGIs2xPtHke+XQyUDcEKz5UU36VBqT
OjiWPqu2P8WaVRZFyryYH5v7PGJ9AUrIFxMgfebIaAUr9Teh0JC5ZBtb/xFbDbzu
2QIDAQAB
-----END RSA PUBLIC KEY-----`
 
func main() {
    var pubkey *rsa.PublicKey
    var ok bool
 
    block, _ := pem.Decode([]byte(pub))
    if block == nil {
        panic("Decode failed")
    }
 
    pub, err := x509.ParsePKIXPublicKey(block.Bytes)
    if err != nil {
        fmt.Println("ParsePKIXPublicKey failed")
        panic(err)
    }
 
    if pubkey, ok = pub.(*rsa.PublicKey); !ok {
        panic("Assertion failed")
    }
 
    fmt.Println(pubkey.N)
 
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.04.2020, 05:32
Помогаю со студенческими работами здесь

Как получить файл upload_certificate.pem
Здравствуйте! У меня возникло несколько вопросов по поводу восстановления ключа подписания приложения. Я согласился на программу подписания...

При изменении формата в Access у меня появляется на файле ключ
при изменении формата в акцесее у меня появляется на файле ключ,почему??? ине могу из-за этого при связании С++ билдере его открыть просит...

Не выходит получить данные с БД
Не выходит получить данные с БД: MySqlConnection myConnection = new MySqlConnection(connect); MySqlCommand command_read =...

Не выходит получить handle процесса
Дебаг привилегии мое приложение получает(проверял в отладчике функции возвращают true), но вот как только пробую получить уже хендл нужного...

Получить данные из json - формата
Доброго времени суток! У меня как у juery&ajax-новичка назрел новый вопрос. Есть таблица в html, при обновлении (или при открытии) страницы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru