Encryption

使用模數和私有指數解密 RSA 64 位加密。得到了gobbledygook在erif是在和r一世F是Verify

  • April 7, 2015

作為實驗的一部分,我得到了一個很可能是使用 openssl 生成的 .enc RSA(加密)文件。我有公鑰,我分解它,獲得私有指數,並以 64 位塊解密 .enc 文件。結果我得到的是胡說八道的十六進制。我應該得到一個密碼或密鑰。

到目前為止我所擁有的:

Factors: 3917781347 x 4215069449 
Private exponent: 9440767265896423601
Modulus: 16513720463601767803

我使用 xxd 從密文文件中提取十六進制數據:xxd -p > enc.hex

這創建了一個名為“enc.hex”的文件的十六進制轉儲。這個文件的內容是這樣開始的:

7d4554292d7b9f980ed049cea0f968cf438b6fc312cf2028ce5ce2fe9f38
387b72a01bf6564f25884a2cacd187c2eeccd0cf78c2a74785f18d5e72b5
270ac3e45b6f7505347b38ec7684b1af206d73ea4a84cd59b50be56d7abf
74a569868406ab2b17846c9e448fe1392b21dac0b10fbb733536c99e598b
683be7400a1ad55c42faa171becd803b8b8f4a1fa512a33222ec042486c5
672f6200d4f00e2994b6d247a44edb6ce90795bde7ccda4433cf6fca8362
f87c68f9df6418c4f0b8fb9da39a1d173fea2b1466e646f01e2dc7fb0499
311d35ec75c15c5910b2d3e0c662de0b3b1716bab44faa2a36538bb44f6a
3c3abd37692cf95fa075b58485ad983533782d7bf51e10c0e3b18ccec972

我的 Python 程式碼:

#!/usr/bin/python
d = 9440767265896423601
N = 16513720463601767803

file = open('enc.hex', 'r')
c = file.read()
n = 16
c = c.replace('\n', '').replace('\r', '')
m = [hex(pow(int(c[i:i+n], 16), d, N)).rstrip("L") for i in range(0, len(c), n)]


f = open('decrypted.hex', 'w')
f.write(''.join(m))
f.close()

其中,“c”是密文,“d”是私有指數,“N”是模數,“m”應該包含明文十六進製字節。

我的python腳本的輸出:

 0x2f2f7656414141410x41414141615155410x41416741414130670x6f414142464a4636
 0x39746d3641414b530x4c3137624e3041410x41424a44414141410x412f365758484676

當我將其轉換為 ASCII 時,我會胡說八道:

//vVAAAAAAAAaQUAAAgAAA0goAABFJF69tm6AAKSL17bN0AAABJDAAAAA/6WXHFv

此外,“2F 2F”不是幻數,也不表示文件類型。正如我所說,我應該在解密後以一種或另一種方式獲得密碼。

我已經為這個實驗花費了數週時間,如果我不解密這個並將密碼提升到一個新的級別,我現在快要哭了。

有人可以快速驗證我所做的是否正確,並且他們在解密後得到相同的十六進制序列嗎?以下是 tarball 中的文件:

http://www.filedropper.com/chaltar

內容:

  • .enc 加密文件
  • .uyu(暗示 .enc 以 RSA 64 位塊加密;您可以忽略它)
  • .pem(我從中提取模數和公共指數的公鑰)

更新:

我明白我現在需要做什麼,我知道會發生什麼。但是,我的 Python 程式碼似乎在接近結尾的某個地方弄亂了 64 位塊解密,因為解密後我沒有得到兩個“==”符號(3d 3d)。這是我解密文件的跟踪(結束)十六進制轉儲:

  002ACD50  33 30 34 31  34 31 34 31   34 31 34 31  30 78 34 31   3041414141410x41
  002ACD60  34 31 34 31  34 31 34 31   34 31 34 31  34 31 30 78   414141414141410x
  002ACD70  34 31 34 31  34 31 34 31   34 31 34 31  34 31 34 31   4141414141414141
  002ACD80  30 78 35 61  35 31 33 64   33 64 34 31  34 31 34 31   0x5a513d3d414141
  002ACD90  34 31 30 78  30                                       410x0

該文件意外地以一個字節 (30) 結束。有人能指出我上面的python解密程式碼有什麼問題嗎?

我自己做了這個過程,我可以確認base64解碼可以解決問題;完整的解密文件將在某處的末尾有 ==。解碼後,“文件”命令將顯示純文字類型。我指出,“.uyu”文件也很容易“解密”。

引用自:https://crypto.stackexchange.com/questions/24804