2013-04-22 5 views
0

Мы пытаемся зашифровать файл с помощью открытого ключа RSA 2048, созданного непосредственно на MS SQL Server. Эти открытые ключи могут быть запрошены с помощью sys.asymmetric_keys. У нас нет доступа к базе данных. Открытые ключи хранятся как поле VARBINARY (максимальное). И посмотрите примерно так:Как получить доступ к открытому ключу MS SQL Server в Java

0x0602000000240000525341310008000001000100D1D13925EC404DA171AE1EA9EFCFCB9849FA 
4678DB26D0EEDD36D440D5EC3781A7EE3E05654EC6830B79E5E745F24A0C35B21C0089D19254A7 
A12B65EA018116482190B2D4DDADB2CD7B0B79F0E08DF97C4E4569D181BC3C34D350AEF821CCA0 
819E4AA336449A4B022F75FC6C382C4BA60CBBBA03461D2B6C7BF7CECE48D52A6B186C57226297 
A09DD5D730ECA29C41796C1C961AA7763D8F7D0094F310D29AEA8D5F526B0B99FEC1841B5462A0 
75648CADBB32C51A43EAC76E8D02B644996368890A762AEF80439B4CD92DA7D38417601918B104 
B1DDEE846DF09E944B562A0828285A6EB362D19E2BDD79DBCE6B86D9F60D264C8EF4F4CCCAEB6B 
89F410AF 

Длина этого открытого ключа составляет 554 цифры. Кажется, это шестнадцатеричное число. Я не знаю, как этот ключ закодирован. Я знаю, что нам нужен KeySpec для создания открытого ключа.

PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic((KeySpec) new SomeKeySpec(bytes); 

У меня нет понятия, как создать ключевую спецификацию из этого.

+0

Можете ли вы опубликовать весь открытый ключ? Это поможет нам определить формат. –

+0

Хорошо, отредактировал сообщение. – CodingWithLegos

ответ

0

Ну, 010001 является общественным представителем. Это хорошо известно, четвертое число Fermat (простое число с первым и последним битом, установленным на 1, все ноль между ними). Это делает его быстрым открытым ключом.

Это делает:

00 D1D13925EC404DA171AE1EA9EFCFCB98 
    49FA4678DB26D0EEDD36D440D5EC3781 
    A7EE3E05654EC6830B79E5E745F24A0C 
    35B21C0089D19254A7A12B65EA018116 

    482190B2D4DDADB2CD7B0B79F0E08DF9 
    7C4E4569D181BC3C34D350AEF821CCA0 
    819E4AA336449A4B022F75FC6C382C4B 
    A60CBBBA03461D2B6C7BF7CECE48D52A 

    6B186C57226297A09DD5D730ECA29C41 
    796C1C961AA7763D8F7D0094F310D29A 
    EA8D5F526B0B99FEC1841B5462A07564 
    8CADBB32C51A43EAC76E8D02B6449963 

    68890A762AEF80439B4CD92DA7D38417 
    601918B104B1DDEE846DF09E944B562A 
    0828285A6EB362D19E2BDD79DBCE6B86 
    D9F60D264C8EF4F4CCCAEB6B89F410AF 

модуль, кодируется как большой байтов целое число. Я не знаю о заголовке перед публичным экспонентом. 52534131 - это ASCII для «RSA1», вероятно, ярлык какого-либо типа, и 0800, несомненно, является ключевым размером.

+0

Обратите внимание, что это также могут быть значения без знака, где каждое значение разделяется байтами «00». Кажется, что в шестнадцатеричном кодировании слишком много байтов с '00'. –

+0

Этого недостаточно для ответа, CodingWithLegos? –

Смежные вопросы